Windows 7平台,C#
我使用以下语句列出所有驱动器:
DriveInfo[] drives = DriveInfo.GetDrives();
Run Code Online (Sandbox Code Playgroud)
然后我可以使用DriveType找出所有可移动磁盘:
foreach (var drive in drives)
{
if(drive.DriveType == DriveType.Removable)
yield return drive;
}
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,SD卡磁盘和USB闪存盘共享相同的driveType:可移动,那么我怎么才能找到USB闪存盘?
谢谢!
我在 WMI 中使用此查询来获取所有 USB 设备:
SELECT * FROM Win32_USBControllerDevice
Run Code Online (Sandbox Code Playgroud)
结果是这样的序列项目:
Antecedent: \\PC\root\cimv2:Win32_UsbController.DeviceID="PCI\VEN82......"
Dependent: \\PC\root\cimv2:Win32_UsbController.DeviceID="USB\\ROOT_HUB20..."
Run Code Online (Sandbox Code Playgroud)
我想找到网络摄像头设备,但我找不到基于这些项目的任何线索。我觉得我用错了方法?
我不想使用 Aforge.net 这样的 3rd 方来做这件事,只是为了列出网络摄像头,我只想使用 WMI。
所以,有人会帮助我吗?谢谢你。
[问题解决了]
使用 SELECT * FROM Win32_PnPEntity
我不知道是否需要结合DataTrigger和Trigger,如果有更好的方法请告诉我.
我的目标是,创建一个菜单(带图标),图标会在遇到悬停或选定的事件时发生变化.
这是一个枚举定义所有菜单类型:
public enum PageTypes:byte
{
NotSet = 0,
HomePage = 1,
ShopPage = 2,
AboutPage = 3
}
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个MenuItemModel来表示每个菜单项:
public class MenuItemModel : INotifyPropertyChanged
{
private PageTypes _menuItemType = PageTypes.NotSet;
public PageTypes MenuItemType { get { return _menuItemType; } set { if (value != _menuItemType) { _menuItemType = value; RaisePropertyChanged(() => MenuItemType); } } }
private bool _isSelected = false;
public bool IsSelected { get { return _isSelected; } set { if (value != _isSelected) { _isSelected = …
Run Code Online (Sandbox Code Playgroud) 我想在WPF,Frame控件上制作页面幻灯片效果。开始了。
首先,我放了一个框架和两个导航按钮:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="25"/>
</Grid.ColumnDefinitions>
<Frame x:Name="frame" Source="page1.xaml" Grid.Column="1" />
<Button Grid.Column="0" Content="<" Click="GoPrevious"/>
<Button Grid.Column="2" Content=">" Click="GoNext"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)
然后我创建了 3 个不同颜色的页面:Page1.xaml、Page2.xaml 和 Page3.xaml
现在,当单击导航按钮时,只需导航到一个 uri:
frame.Navigate(new Uri("page2.xaml", UriKind.Relative));
Run Code Online (Sandbox Code Playgroud)
完毕。现在我想在导航时使每个页面滑动(每个人都想要它)。所以我的计划是设置每个页面的 Loaded EventTrigger:
<Page.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard>
<Storyboard>
<ThicknessAnimation Duration="0:0:0.75" Storyboard.TargetProperty="Margin" From="500,0,-500,0" To="0" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="FrameworkElement.Unloaded">
<BeginStoryboard>
<Storyboard>
<ThicknessAnimation Duration="0:0:0.75" Storyboard.TargetProperty="Margin" From="0" To="-500,0,500,0" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Page.Triggers>
Run Code Online (Sandbox Code Playgroud)
它有效!一切正常,直到我发现页面不连续,这意味着,当您导航到 page2 时,page1 将立即卸载,而不是开始 page2 加载事件。我试图设置 page1 的卸载事件,但不起作用。
我想要的是,当page1开始退出时,page2应该马上就上台了,就像一列火车一样。
那么怎么做呢?谢谢。
我有一个简单的问题:
Windows1的loaded事件,让它关闭:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.Close();
}
在MainWindow上放置一个“打开”按钮,实现它的click事件:
private void button_Click(object sender, RoutedEventArgs e)
{
Window1 w = new Window1();
w.Show();
}
当我启动该应用程序时,VS2015的UI变为“调试模式”,然后单击Window右上角的关闭按钮,VS2015的UI返回正常模式。
现在,如果我启动应用程序,请单击“打开”按钮,然后Window1将快速显示并关闭,但是,如果我单击MainWindow右上角的关闭按钮,则情况有所不同:VS2015将不会返回正常模式,而是保持不变在“调试模式”下。所以对我来说,那意味着有些东西挂在那里,我不知道那是什么。
有谁知道如何解决这个问题?
我想在 UWP 中使用 ResourceDictionary 就像我在 WPF 中使用的那样在 WPF 中,我在 ResourceDictionary 文件(*Style.xaml)中执行此操作
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls"
xmlns:models="using:NWP.Models">
<Style x:key="MenuContent" TargetType="ContentControl">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ContentControl">
<controls:DockPanel>
<ItemsControl ItemsSource="{x:Bind How-Can-I-Bind-Collection-Here?}">
<ItemsControl.ItemTemplate>
<DataTemplate x:DataType="models:MenuItemModel">
<RadioButton GroupName="MenuItems" IsChecked="{x:Binding IsChecked, Mode=TwoWay}" MinHeight="0" MinWidth="0" Command="{Binding Command}" CommandParameter="{Binding}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
<ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentTransitions="{TemplateBinding ContentTransitions}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</controls:DockPanel>
</ControlTemplate>
</Setter.Value>
</Style>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)
然后我可以在我的页面中使用这种样式:
<ContentControl Style="{StaticResource MenuContent}">
<StackPanel Orientation="Vertical">
<TextBox/>
<PasswordBox/>
<Button Content="Login"/>
</StackPanel>
</ContentControl> …
Run Code Online (Sandbox Code Playgroud) 我遇到了一个非常奇怪的问题。这是我的观点:
<Grid>
<Border x:Name="C01" VerticalAlignment="Center" Panel.ZIndex="2" HorizontalAlignment="Center" />
</Grid>
Run Code Online (Sandbox Code Playgroud)
这是我想在视图中显示的用户控件:
<UserControl x:Class="Nwp.UserComponents.ULogin"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
Width="350" Height="220">
<Grid>
<Border Margin="10" BorderBrush="DimGray" BorderThickness="1" Background="White">
<Border.Effect>
<DropShadowEffect ShadowDepth="0" BlurRadius="10"/>
</Border.Effect>
<Grid>
<!-- ... here's content -->
</Grid>
</Border>
</Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
为了显示用户控件,我将其添加为边框“C01”的子控件,如下所示:
C01.Child = new ULogin();
Run Code Online (Sandbox Code Playgroud)
到目前为止一切正常,看起来像这样:
请注意,用户控件的宽度和高度是 2 个偶数:350 和 220。如果将其中一个更改为奇数,则用户控件显示会有点模糊:
当我再次使用偶数时:330x200,没有模糊:
使用奇数 330x201,再次模糊:
有谁知道如何解决这个问题?