我有程序列出硬盘驱动器和网络接口,如在这张图片:
如果我点击硬盘名称,我可以看到文本框中的驱动器类型。这是工作正常。但是,如果我尝试在网络接口上的这个代码不工作。它给出了错误CS0144:无法创建抽象类型或接口"NetworkInterface"的示例
代码如下:
private void button2_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
textBox1.Text = "";
DriveInfo[] Drives = DriveInfo.GetDrives();
foreach (DriveInfo drv in Drives)
{
listBox1.Items.Add(drv.Name);
}
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
String strDrive = (string)listBox1.SelectedItem;
DriveInfo drive = new DriveInfo(strDrive);
textBox1.Text = drive.DriveType.ToString();
}
这里是不工作的网络接口:
private void button3_Click(object sender, EventArgs e)
{
listBox2.Items.Clear();
textBox2.Text = "";
NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in adapters)
{
listBox2.Items.Add(adapter.Name);
}
}
private void listBox2_SelectedIndexChanged(object sender, EventArgs e)
{
String strInterface = (string)listBox2.SelectedItem;
NetworkInterface adapter = new NetworkInterface(strInterface);
textBox2.Text = adapter.Description.ToString();
}
这一行是错误的:网络接口适配器=新的网络接口(strInterface);
2条答案
按热度按时间2nbm6dog1#
从
NetworkInterface
docs:不创建此类的示例;
GetAllNetworkInterfaces
方法返回一个数组,其中包含本地计算机上每个网络接口的此类示例。因此,可以再次调用
GetAllNetworkInterfaces
并过滤结果:或者将先前调用的结果存储在某个字段/属性中,然后使用这些结果进行搜索,或者只使用结果数组作为
listBox2
本身的数据源。klr1opcd2#
您可以将
NetworkInterface
示例直接存储在列表框项目中:并设置
listBox2.DisplayMember = nameof(NetworkInterface.Name)
以使列表框显示它们的名称。然后,您可以访问选定的适配器作为: