更改按钮点击事件,创建指数增加的事件

时间:2012-12-07 23:22:33

标签: c# button onclick

有一个带有开始/停止按钮的简单应用程序,我想根据它的当前状态做不同的事情。如果按钮处于启动状态,则执行代码然后更改为停止状态并将OnClick事件更改为StopButton_Click,反之亦然。

似乎无法更改按钮的on-click属性,因此使用下面的代码可以正常工作,但不断添加事件的实例。首次点击执行一次,第二次点击执行两次,第三次执行四次,无限期。

StartButton.Click += new System.EventHandler(StartButton_Click);

交替使用

StartButton.Click += new System.EventHandler(StopButton_Click);

有没有办法替换OnClick处理程序而不是添加它?

3 个答案:

答案 0 :(得分:1)

尝试在添加新事件之前删除事件处理程序:

StartButton.Click - = StartButton_Click;

答案 1 :(得分:1)

一个选项是在添加另一个之前删除先前的事件处理程序,但更简单的选项是仅使用单个事件处理程序。事件处理程序可以查看某个内部状态字段以确定要执行的操作;这可能比不断添加/删除事件处理程序更容易。

看起来像这样:

private void buttonClick(object sender, EventArgs args)
{
    if(buttonState == MyStateEnum.Start)
        PerformStartAction();
    else if(buttonState == MyStateEnum.Stop)
        PerformStopAction();
}

然后,您只需要为buttonState分配不同的值,而不是添加/删除事件处理程序。

答案 2 :(得分:0)

+=可以处理事件,因为它可以执行任何其他操作。它增加了已有的东西。

尝试使用 - =删除现有的事件处理程序,然后添加新的事件处理程序。