【问题标题】:Confused about about how to iterate this collection对如何迭代这个集合感到困惑
【发布时间】:2015-02-22 12:11:52
【问题描述】:

我想要做的是获取所有可用的网络适配器 带有键和值对。所以我有一个名为 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;


        }

【问题讨论】:

  • 哪个组合框? WPF、WinForms、ASP.NET?
  • 只是winforms朋友
  • 好好看看我们如何/为什么使用标签。

标签: c# winforms combobox


【解决方案1】:

根据您获得的示例(请参阅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 的对象类的属性名称。

注意事项:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-29
    • 2012-10-05
    • 2016-04-08
    • 2020-03-02
    • 1970-01-01
    • 1970-01-01
    • 2022-11-25
    • 2017-10-08
    相关资源
    最近更新 更多