ping响应失败时更改按钮背景颜色

时间:2019-06-21 06:50:27

标签: c#

在我的应用程序中,我有一个按钮,用于显示网络中访问点的状态。启动应用程序时,按钮的背景为绿色,但是当断开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地址并启动应用程序时,按钮背景保持默认颜色(灰色)

不确定我要去哪里错吗?

2 个答案:

答案 0 :(得分:1)

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

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


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

答案 1 :(得分:0)

注意:我无法添加评论

请调试r.status值,它可能不是IPStatus.TimedOut值,所以如果有条件则删除其他项,而仅放置其他项。 (不是IPStatus。成功响应颜色应为红色

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