显示标签消息而不单击

时间:2012-05-11 12:39:46

标签: c# label

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

    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),但这给出了错误,我不知道为什么。我内部的代码与任何点击都没有任何关联。

2 个答案:

答案 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显示传统的点击链接到您未使用的点击)