C# 32. 静态类实现下拉框选择网卡

//NetIf.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.NetworkInformation;

namespace Xxxxx
{
    class NetIf
    {
        public struct NetIfType
        {
            public string netIf;
            public string Ip;
        }
        public static List<NetIfType> NetIfList = new List<NetIfType>();
        public static int selectNetIf = 0;


        public static List<NetIfType> GetNetIf()
        {
            List<NetIfType> listStr = new List<NetIfType>();
            //获取所有网卡信息
            NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
            foreach (NetworkInterface adapter in nics)
            {
                //判断是否为以太网卡
                //Wireless80211         无线网卡    Ppp     宽带连接
                //Ethernet              以太网卡   
                if (adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
                {
                    //获取以太网卡网络接口信息
                    IPInterfaceProperties ip = adapter.GetIPProperties();
                    //获取单播地址集
                    UnicastIPAddressInformationCollection ipCollection = ip.UnicastAddresses;
                    foreach (UnicastIPAddressInformation ipadd in ipCollection)
                    {
                        //InterNetwork    IPV4地址      InterNetworkV6        IPV6地址
                        //Max            MAX 位址
                        if (ipadd.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                        {
                            listStr.Add(new NetIfType()
                            {
                                netIf = adapter.Description,
                                Ip = ipadd.Address.ToString()
                            });
                        }
                    }
                }
            }
            return listStr;
        }

        //选择网卡上的本地IP
        public static string GetLocalIp(int index)
        {
            if (index>= 0)
            {
                return NetIfList[index].Ip;
            }
            else
            {
                return null;
            }
        }
    }
}

private void comboBoxNetIf_DropDown(object sender, EventArgs e)
{
    NetIf.NetIfList.Clear();
    NetIf.NetIfList = NetIf.GetNetIf();
    comboBoxNetIf.Items.Clear();
    foreach (NetIf.NetIfType m in NetIf.NetIfList)
    {
        comboBoxNetIf.Items.Add(m.netIf);
    }           
}


//在非UI线程中
private void UserThread()
{
 		string localIp = null;
            int flag;
            
            Invoke((EventHandler)(delegate
            {
                NetIf.selectNetIf = comboBoxNetIf.SelectedIndex;
            }));
            localIp = NetIf.GetLocalIp(NetIf.selectNetIf);

.......
}

实际效果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值