You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将ComboBox选中的NetworkInterface适配器传入GetDeviceInfo方法

解决ComboBox选中项转换为NetworkInterface对象的问题

方案一:直接绑定NetworkInterface对象(推荐)

直接将NetworkInterface实例添加到ComboBox,而非仅添加名称字符串,这样选中时可直接获取完整对象,避免后续查找匹配的麻烦:

// 修改ComboBox填充逻辑
foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
{
    cbox1.Items.Add(nic);
}
// 设置ComboBox显示对象的Name属性,界面仍显示设备名称,但后台存储完整对象
cbox1.DisplayMemberPath = "Name";

在SelectionChanged事件中直接获取选中的对象:

private void cbox1_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
    NetworkInterface selectedAdapter = cbox1.SelectedItem as NetworkInterface;
    if (selectedAdapter != null)
    {
        string deviceInfo = GetDeviceInfo(selectedAdapter);
        // 此处可将deviceInfo展示到目标控件,如 textBox1.Text = deviceInfo;
    }
}

方案二:根据选中名称查找对应NetworkInterface对象

如果已填充的是设备名称字符串,可通过名称匹配查找对应的对象:

private void cbox1_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
    if (cbox1.SelectedItem == null) return;

    string selectedName = cbox1.SelectedItem.ToString();
    // 通过名称匹配查找NetworkInterface(系统中设备名称通常唯一)
    NetworkInterface selectedAdapter = NetworkInterface.GetAllNetworkInterfaces()
        .FirstOrDefault(nic => nic.Name.Equals(selectedName, StringComparison.OrdinalIgnoreCase));

    if (selectedAdapter != null)
    {
        string deviceInfo = GetDeviceInfo(selectedAdapter);
        // 此处可使用获取到的设备信息
    }
}

注意:方案二存在名称重复时匹配首个对象的风险,优先推荐方案一。

内容的提问来源于stack exchange,提问作者user838691

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 05:30:52