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