码迷,mamicode.com
首页 > Windows程序 > 详细

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

时间:2019-10-17 16:07:12      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:触发事件   start   win   blog   dial   src   技术   col   tps   

场景

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;
           
        }

 

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

标签:触发事件   start   win   blog   dial   src   技术   col   tps   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!