Windows应用程序 - 多次调用自定义事件

时间:2013-07-29 13:55:55

标签: c# winforms

专家,

在按钮点击期间,我在Windows应用程序中遇到一个问题。

我有两个文件A.cs& B.cs

在A.cs文件中,我有一个名为“Load”的按钮,当我单击此按钮时,我需要在B.cs中触发一个函数。

为此,我编写了一个事件处理程序。

通用文件:

  

public delegate void MyEventHandler(object sender,EventArgs e,string TagId);

A.cs文件:

  

公共事件MyEventHandler OnTagLoad;

     

private void btnLoad_Click(object sender,EventArgs e)      {        if(OnTagLoad!= null)        {          OnTagLoad(sender,e,runTimeData);        }      }

B.cs文件:

  

HostForm.OnTagLoad + = new MyEventHandler(HostForm_OnTagLoad);

     

private void HostForm_OnTagLoad(object sender,EventArgs e,string runTimeData)      {        //做一些功能      }

问题:

单击“加载”按钮时,事件将被触发两次,如果我再次单击该按钮,则会调用相同的事件三次,等等....

每当我点击“加载”按钮时,事件应该只被触发一次。我们怎样才能以windows形式实现这一点。

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

听起来像

HostForm.OnTagLoad += new MyEventHandler(HostForm_OnTagLoad);

被多次调用。将其移动到类中仅调用一次的位置,或者在再次添加之前删除处理程序,如此

HostForm.OnTagLoad -= new MyEventHandler(HostForm_OnTagLoad);
HostForm.OnTagLoad += new MyEventHandler(HostForm_OnTagLoad);

(我推荐第一种方法)