1

所以我希望能够在不点击标签的情况下在标签上显示消息。

    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!";
        }  
    }

我将(null,null)绑定在(object sender,EventArgs e)中,但这给出了错误,我不知道为什么。我里面的代码与任何点击都没有任何关联。

4

2 回答 2

5

您显然希望显示服务器的状态。

但是当用户要求更新时您不想更改它,您希望它自动更改对吗?

你有两个选择。编辑:我现在看到选项#1 不起作用,您将需要下面的计时器选项。我删除了选项 #1

选项 #2 如果它在您的程序之外更改,那么您可以添加一个计时器,根据您希望更新用户的速度,每隔一秒或两秒询问一次,然后添加您的代码以设置标签

    public Timer t = new Timer();

然后在您的主表单构造函数中,在 InitializeComponent(); 行添加这个

    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!";
        }  
    }
于 2012-05-11T12:52:44.453 回答
1

将 null null 放在事件处理程序的参数中会给您一个错误,因为代码需要知道发送此请求的内容(对象,在本例中为标签)以及它使用的事件参数(e)您不能将这些设置为空,它需要它们发挥作用。这就是它给出错误的原因。

也正如所解释的那样,当您单击时,这可能不会触发,因为您没有将标签单击事件与此代码链接(click_1 显示有一个传统的点击,它链接到您未使用的链接)

于 2012-05-11T12:53:13.070 回答