谁将网关IP信息导入文本框

时间:2013-11-14 03:47:45

标签: c# wpf visual-studio ip

在这里完成nube。刚学习:)。

我做了一些研究,但无法得到答案。

我正在尝试在文本框中显示我的网关IP。这是我的代码(从代码片段构建):

foreach (NetworkInterface f in NetworkInterface.GetAllNetworkInterfaces())
    if (f.OperationalStatus == OperationalStatus.Up)
        foreach (GatewayIPAddressInformation d in f.GetIPProperties().GatewayAddresses)

         Gateway_Address.Text = d.Address.ToString();

文本框仅显示“::”

现在,如果我使用(从另一个线程复制):

foreach (NetworkInterface f in NetworkInterface.GetAllNetworkInterfaces())
    if (f.OperationalStatus == OperationalStatus.Up)
        foreach (GatewayIPAddressInformation d in f.GetIPProperties().GatewayAddresses)
            MessageBox.Show(d.Address.ToString());

消息框显示IP。为什么输出不同?

2 个答案:

答案 0 :(得分:1)

当您在foreach循环中将值赋给TextBox时,可能会发生最后一项现在可能IP atall因此(空IP)将添加到您的{{1 }}

在将项目添加到TextBox

之前,请添加支票

替换它:

TextBox

以下:

Gateway_Address.Text = d.Address.ToString();

在您的第二个代码段中,您使用if(d.Address.ToString().Trim().Length>2)//ignore :: Gateway_Address.Text = d.Address.ToString(); 显示每个IP,因此您可以看到介于其中的MessageBox

答案 1 :(得分:0)

Gateway_Address.Text += d.Address.ToString() + "\r\n";

var nis = System.Net.NetworkInformation
            .NetworkInterface.GetAllNetworkInterfaces()
            .Select(s =>
                string.Format("{0}: {1}", s.Name,
                string.Join(";", s.GetIPProperties().GatewayAddresses.Select(ss => ss.Address.ToString()))));

Gateway_Address.Text = string.Join("\r\n", nis);