C#中窗口关闭时没有取消事件订阅导致事件重复执行的解决方法

场景

C#中委托与事件的使用-以Winform中跨窗体传值为例:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100150700

参考上面的博客。

现在是在主页面点击按钮时弹出窗体,在窗体的load事件中进行事件的订阅,然后关闭窗体,再次打开时执行触发事件后,

订阅的事件就会执行两次,依次类推。

这是因为在窗体关闭的时候没有将原来的事件订阅解除掉。

注:

博客主页:
https://blog.csdn.net/badao_liumang_qizhi

关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

点击主窗体按钮窗体显示。

FrmCurveCompare curveCompare = new FrmCurveCompare();
curveCompare.StartPosition = FormStartPosition.CenterScreen;
//显示Dialog
curveCompare.ShowDialog();

然后在窗体的load事件中

private void FrmCurveCompare_Load(object sender, EventArgs e)
        {

            Common.ChartCompare.ChartCompareHelper.OnReloadSelectData += DataTreeListHelper_OnReloadSelectData;

        }

解决方案在窗体的关闭事件中解除订阅。

首先在属性中找到窗体关闭事件

添加如下代码:

 private void FrmCurveCompare_FormClosing(object sender, FormClosingEventArgs e)
        {
            Common.ChartCompare.ChartCompareHelper.OnReloadSelectData -= DataTreeListHelper_OnReloadSelectData;

        }

原文地址:https://www.cnblogs.com/badaoliumangqizhi/p/11692269.html

时间: 2024-11-08 23:05:07

C#中窗口关闭时没有取消事件订阅导致事件重复执行的解决方法的相关文章

word中选择嵌入式时图片被遮住,只显示小部分的解决方法

选中图片,点击如下 选择  行距选项 将行距改为单位行距即可.

JavaScript中的window.close在FireFox和Chrome上不能正常动作的解决方法

原文:JavaScript中的window.close在FireFox和Chrome上不能正常动作的解决方法 JS中关闭窗口的方法window.close()在IE上能够正常动作,而在FireFox和Chrome上无法动作. (当时,在Chrome35.0上的时候还是可以的,Chrome36.0上就无法动作了JS中关闭窗口的方法window.close()在IE上能够正常动作,而在FireFox和Chrome上无法动作. (当时,在Chrome35.0上的时候还是可以的,Chrome36.0上就

PowerShell因为在此系统中禁止执行脚本解决方法

PowerShell因为在此系统中禁止执行脚本解决方法 在Powershell直接脚本时会出现: 无法加载文件 ******.ps1,因为在此系统中禁止执行脚本.有关详细信息,请参阅 "get-help about_signing". 所在位置 行:1 字符: 17 + E:\Test\test.ps1 <<<<     + CategoryInfo          : NotSpecified: (:) [], PSSecurityException    

运行jar文件时,出现“could not find the main class”的解决方法

想要在电脑上正常运行jar文件,应该确认电脑已安装好jdk和jre,并配置好环境变量. 如果安装与配置都没有问题却无法运行,则有可能是注册表的问题. 解决方法: 打开注册表,注册表项的路径为:\HKEY_CLASSES_ROOT\Aplications\javaw.exe\shell\open\command 在此路径下有一默认键值, 不正常的情况下, 键值是:"C:\Program Files\Java\jre6\bin\javaw.exe" "%1" 在键值中添

xp 中的IIS安装成功之后,访问网页显示没有权限访问解决方法

在做xp的IIS发布网站时遇到一个问题就是当你访问网站的时候,显示没有权限访问网站,但是我已经开启了匿名访问网站了,怎么还没有权限访问呢?后来经过上网搜资料解决,当时很多网上都说没打开匿名访问,当时我就仔细查看了一下,我又点开网站的目录安全性,查看匿名访问是否被选中,当时我点进去之后发现匿名访问已经被选中了啊.为什么还不能上呢.后来我才发现原来是因为匿名访问的用户错了,一开始安装的IIS的匿名访问用户是7BKSBRPUUJY1Z9N\IWAM_7BKSBRPUUJY1Z9N,主要是IWAM账号是

MyEclipse+Tomcat 启动时出现A configuration error occured during startup错误的解决方法

MyEclipse+Tomcat 启动时出现A configuration error occured during startup错误的解决方法 分类: javaweb2013-06-03 14:43 3706人阅读 评论(0) 收藏 举报 当单击MyEclipse中的Debug server 启动服务器的时候,出现了这么个提示: Eclipse菜单,Window->Preference…,打开Preference对话框,找到菜单树中MyEclipse-> Application Serve

androidstudio打包时出现错误Error:Execution failed for task &#39;:app:transformClassesWithDexForRelease&#39;解决方法

今天在android studio上打包项目时,遇到了Error:Execution failed for task ':app:transformClassesWithDexForRelease这么个错误,记得之前也遇到过这种问题,却如何想不起怎么解决的,只好再次在网上查资料,总算是解决了 这个问题的原因倒是简单的很,是因为我项目中应用的jar包重复,我在build.gradle文件的dependencies中重复依赖了libs下的jar包,将下边的删除即可 androidstudio打包时出

在vs中出现无法嵌入互操作类型“……”,请改用适用的接口的解决方法

1.在生成项目时提示所引用COM组件 出现了无法嵌入互操作类型“……”,请改用适用的接口的错误提示. 2.解决方案: 选中项目中引入的dll,鼠标右键,选择属性,把“嵌入互操作类型”设置为False. 在vs中出现无法嵌入互操作类型"--",请改用适用的接口的解决方法

Eclipse启动时提示Fail to create the Java Virtual Machine的解决方法

这个错误是Eclipse里面的一个bug,我们通过如下的设置就可以解决它. 打开eclipse安装目录下的eclipse.ini文件: 将其中的256m改为128m,512m改为256m,1024m改为512m即可. 修改后的文件内容如下: -startupplugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar--launcher.libraryplugins/org.eclipse.equinox.launcher.win32