我想要做的是获得所有可用的网络适配器 用键和值对。所以我有一个名为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;
}
答案 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}}媒体资源。
ComboBox
和ValueMember
属性可用于控制从DisplayMember
属性返回的值以及SelectedValue
本身分别显示的字符串。它们是ComboBox
值,包含用于填充string
的对象类的属性名称。
注意:
ComboBox
实际上是否是表单中包含对combobax
对象的引用的字段的正确名称。这就是你输入的内容,所以它就是我留在这里的。