所以我希望能够在不点击标签的情况下在标签上显示消息。
public void servicestatus_Click_1(object sender, EventArgs e)
{
var mavbridgeservice = new System.ServiceProcess.ServiceController("MavBridge");
if (mavbridgeservice.Status == ServiceControllerStatus.Running)
{
servicestatus.Text = ("The service is running!");
}
else
{
servicestatus.Text = "The service is stopped!";
}
}
我在(对象发送者,EventArgs e)中绑定了put(null,null),但这给出了错误,我不知道为什么。我内部的代码与任何点击都没有任何关联。
答案 0 :(得分:5)
您显然希望显示服务器的状态。
但是,当用户要求更新时,您不希望对其进行更改吗?
您有两种选择。 编辑:我现在看到#1选项不起作用,你需要下面的计时器选项。我删除了选项#1
选项#2 如果在您的程序之外更改它,那么您可以添加一个计时器,根据您希望更新用户的速度每秒或两秒钟询问,并在此时添加您的代码以设置标签
public Timer t = new Timer();
然后在你的主窗体构造函数中,在InitializeComponent()下; line添加此
t.Interval = 1000;
t.Tick+=new EventHandler(t_Tick);
t.Enable=true;
在timer.Tick事件中运行代码以确定状态(当前标签的点击事件中的内容)
void t_Tick(object sender, EventArgs e)
{
var mavbridgeservice = new System.ServiceProcess.ServiceController("MavBridge");
if (mavbridgeservice.Status == ServiceControllerStatus.Running)
{
servicestatus.Text = ("The service is running!");
}
else
{
servicestatus.Text = "The service is stopped!";
}
}
答案 1 :(得分:1)
在事件处理程序的参数中放置null null会给出错误,因为代码需要知道发送此请求的内容(对象,在本例中为标签)和它使用的事件参数(e)您不能为null这些,需要它们发挥作用。这就是它给出错误的原因。
另外正如所解释的那样,当您点击时可能会发生火灾,因为您没有将标签点击事件与此代码相关联(click_1显示传统的点击链接到您未使用的点击)