对于如何迭代这个集合感到困惑

时间:2015-02-22 12:11:52

标签: c# winforms combobox

我想要做的是获得所有可用的网络适配器 用键和值对。所以我有一个名为Adapters的类由两个变量组成,第一个是保持  注册表项和第二个是  保留适配器名称,例如(无线,本地区域等)。这是我的代码

  List<Adapters> GetAdapterNames(string regPath)
      {
          List<Adapters> list = new List<Adapters>();


          RegistryKey key = RootNode(regPath, false);
          if (key != null)
          {
              string[] par = key.GetSubKeyNames();

              foreach (string node in par)
              {

                  if (node != "Descriptions")
                  {

                      RegistryKey keys = RootNode(regPath+"\\"+node + "\\Connection", false);
                      string name = keys.GetValue("Name").ToString();

                      list.Add(new Adapters(name,node));


                  }

      }
     return list;

这是我的适配器类

class Adapters
{
    private string _name;
    private string _val;

    public string Name
    {
        get { return _name; }
        set { _name = value; }
    }

    public string Val
    {
        get { return _val; }
        set { _val = value; }
    }

    public Adapters(string name,string value)
    {
        _name = name;
        _val = value;
    }
}

问题是如何将此列表提供给组合框并在其中循环。 像这样的东西

 private const string ADAPTER_PATH =
            @"SYSTEM\ControlSet001\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}";
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
         List<Adapters>adapters= GetAdapterNames(ADAPTER_PATH);


           combobax.valueMember=//list.name
 combobax.displayMember=list.node;


        }

1 个答案:

答案 0 :(得分:0)

根据您已获得的示例(请参阅How to create a Minimal, Complete, and Verifiable example以获取有关如何在您的问题中提供良好代码示例的建议),以下内容可行:

private void Form1_Load(object sender, EventArgs e)
{
    List<Adapters>adapters= GetAdapterNames(ADAPTER_PATH);

    combobax.DataSource = adapters;
    combobax.ValueMember = "Name";
    combobax.DisplayMember = "Val";
}

您可以将IList的任何实施分配到DataSource的{​​{1}}媒体资源。

ComboBoxValueMember属性可用于控制从DisplayMember属性返回的值以及SelectedValue本身分别显示的字符串。它们是ComboBox值,包含用于填充string的对象类的属性名称。

注意:

  • 我不知道ComboBox实际上是否是表单中包含对combobax对象的引用的字段的正确名称。这就是你输入的内容,所以它就是我留在这里的。
  • 显示节点注册表项名称似乎有点奇怪,并使用&#34; friendly&#34;适配器名称作为值成员。但同样,这就是你输入的内容,这就是我在示例中所显示的内容。