首页 > 解决方案 > ping 响应失败时更改按钮背景颜色

问题描述

在我的应用程序中,我有一个按钮,显示网络中接入点的状态。启动应用时按钮的背景是绿色的,但是断开AP时按钮保持绿色而不是变为红色?

这是我目前使用的代码:

Ping p = new Ping();
        PingReply r;
        string s;
        s = "192.168.0.8";
        r = p.Send(s);
        if (r.Status == IPStatus.Success)
        {
            button1.BackColor = Color.Green;
        }
        else if (r.Status == IPStatus.TimedOut)
        {
            button1.BackColor = Color.Red;
        }

当我输入无响应的 IP 地址并启动应用程序时,按钮背景保持默认颜色(灰色)

不知道我哪里出错了?

标签: c#

解决方案


您的代码中的问题是 IPStatus 大部分时间都不是 TimedOut 。
在本地测试时,我得到了 IPStatus.DestinationHostUnreachable,因此您需要将代码更改为:

else if (r.Status == IPStatus.DestinationHostUnreachable)
    {
        button1.BackColor = Color.Red;
    }


但我强烈建议删除第二个 else if 并用 else 替换它,以便在主机无法访问时将颜色设置为红色,无论出于何种原因。


推荐阅读