0

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: 
4

0 に答える 0