2 つの質問があります。
まず、いくつかの WMI オブジェクトを辞書に追加するのに苦労しています。現在、必要な値を追加しようとするたびに、System.InvalidCastException: Specified cast is not valid.
この問題を修正するにはどうすればよいですか?
次に、これらの WMI オブジェクト/値を辞書に追加した後、辞書を WPF コンボボックスにバインドするにはどうすればよいですか? 辞書の値をバインドできるようにしたいと思います。この場合、対応する値が選択されるたびに辞書から値NetConnectionID
を返しながら、コンボボックスのドロップダウンにバインドします。Index
これが私のコードです:
class NetworkInterfaces
{
public Dictionary<int, string> GetNetworkAdapters()
{
Dictionary<int, string> Adapters = new Dictionary<int, string>();
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher
("SELECT Index,NetConnectionID FROM Win32_NetworkAdapter");
ManagementObjectCollection data = searcher.Get();
foreach (ManagementObject item in data)
Adapters.Add((int)item["Index"], (string)item["NetConnectionID"]);
return Adapters;
}
catch (Exception ex)
{
Console.WriteLine("ERROR: " + ex);
}
return null;
}
}
. . . .
private void NetworkAdapters()
{
NetworkInterfaces NICInfo = new NetworkInterfaces();
Dictionary<int, string> Adapters = NICInfo.GetNetworkAdapters();
if (Adapters != null)
{
cmbNetworkAdapters.ItemsSource = Adapters;
cmbNetworkAdapters.DisplayMemberPath = "Value";
}
}
private void cmbNetworkAdapters_DropDownOpened(object sender, EventArgs e)
{
cmbNetworkAdapters.DisplayMemberPath = "Key";
}
private void cmbNetworkAdapters_DropDownClosed(object sender, EventArgs e)
{
cmbNetworkAdapters.DisplayMemberPath = "Value";
}
エラーの詳細:
System.InvalidCastException was caught
HResult=-2147467262
Message=Specified cast is not valid.
Source=MyProject
StackTrace:
at MyProject.NetworkInterfaces.GetNetworkAdapters() in h:\_Storage\Projects\MyProject\MyProject\NetworkInterfaces.cs:line 28
InnerException: