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

Confused about about how to iterate this collection

我想做的是获取所有可用的网络适配器 键和值 pairs.So 我有 class 命名适配器由两个变量组成,第一个是保持 注册表项,第二个是 保留适配器名称,例如(无线、本地等)。这是我的代码

  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

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;


        }

根据您获得的示例(请参阅 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 的任何实现分配给 ComboBoxDataSource 属性。

ValueMemberDisplayMember 属性可用于控制从 SelectedValue 属性 返回什么值以及在 ComboBox 中显示什么字符串] 本身,分别。它们是 string 值,其中包含用于填充 ComboBox.

对象的 class 的 属性 的名称

备注:

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