C# Windows应用程序-自定义事件被多次调用
专家们 在单击按钮期间,我在Windows应用程序中遇到一个问题 我有两个文件A.cs和B.cs 在A.cs文件中,我有一个名为“加载”的按钮,当我单击该按钮时,我需要触发B.cs中的一个函数 为此,我编写了一个事件处理程序 通用文件: 公共委托void MyEventHandler(对象发送方、事件参数e、字符串TagId) A.cs文件: 公共活动MyEventHandler OnTagLoad 私有void btnLoad_单击(对象发送方,事件参数e) { if(OnTagLoad!=null) { OnTagLoad(发送方、e、运行时数据); } } B.cs文件: HostForm.OnTagLoad+=新的MyEventHandler(HostForm_OnTagLoad) 私有void HostForm_OnTagLoad(对象发送方、事件参数e、字符串运行时数据) { //做一些功能 } 问题: 当我点击加载按钮时,事件会被触发两次,如果我再次点击按钮,同一事件会被调用三次,以此类推 每当我单击Load按钮时,事件应该只触发一次。我们如何在windows窗体中实现这一点 谢谢你的帮助。听起来像C# Windows应用程序-自定义事件被多次调用,c#,winforms,C#,Winforms,专家们 在单击按钮期间,我在Windows应用程序中遇到一个问题 我有两个文件A.cs和B.cs 在A.cs文件中,我有一个名为“加载”的按钮,当我单击该按钮时,我需要触发B.cs中的一个函数 为此,我编写了一个事件处理程序 通用文件: 公共委托void MyEventHandler(对象发送方、事件参数e、字符串TagId) A.cs文件: 公共活动MyEventHandler OnTagLoad 私有void btnLoad_单击(对象发送方,事件参数e) { if(OnTagLoad!=n
HostForm.OnTagLoad += new MyEventHandler(HostForm_OnTagLoad);
正在被多次调用。要么将其移动到类中只调用一次的位置,要么在再次添加处理程序之前将其删除,如下所示
HostForm.OnTagLoad -= new MyEventHandler(HostForm_OnTagLoad);
HostForm.OnTagLoad += new MyEventHandler(HostForm_OnTagLoad);
(我推荐第一种方法)这种方法我已经试过了,但没有成功。你两种方法都试过了吗?如果是这样的话,那么会有比你在帖子中所展示的更多的东西导致这个问题。基本上,我在B.cs文件的构造函数中订阅了这个事件。这是问题的原因吗?在
HostForm.OnTagLoad+=new MyEventHandler(HostForm\u OnTagLoad)上放置一个断点代码>行并查看它被命中的次数。我已经检查了调用堆栈,它只调用构造函数一次,但当它转到HostForm_OnTagLoad函数时,它会一次又一次地调用同一个函数。现在按F11键调试更多。请显示代码中调用或具有OnTagLoad的任何位置。