C#中怎样跨窗体调用事件-从事件订阅实例入手

场景

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

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

参考上面的博客。

需求是在图形选项窗体中刷新主窗体的图。

注:

博客主页:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

首先是图形选项窗体,即发起方。

先要声明刷新事件(此事件声明在图形选项工具类DataChartHelper中):

public static event EventHandler OnRefreshChart;

然后图形选项窗体的保存按钮事件中要调用刷新事件时需要触发:

if (this.Confirm("保存成功") == DialogResult.OK)
                {
                    Common.DataChart.DataChartHelper.TriggerRefreshChart();     //触发图形刷新事件
                    this.Dispose();
                }

此时会触发在图形选项工具类中的TriggerRefreshChart(),回到工具类中:

 

public static void TriggerRefreshChart()
        {
            if (OnRefreshChart != null)
            {
                OnRefreshChart(null, System.EventArgs.Empty);
            }
        }

此时需要在主页面进行图的刷新。在主页面窗体的窗体加载事件中进行事件订阅:

Common.DataChart.DataChartHelper.OnRefreshChart -= DataChartHelper_OnRefreshChart;
Common.DataChart.DataChartHelper.OnRefreshChart += DataChartHelper_OnRefreshChart;

此时就会执行当前主页面的方法DataChartHelper_OnRefreshChart:

private void DataChartHelper_OnRefreshChart(object sender, EventArgs e)
        {
            DataChartHelper.RefreshPane(this.zedGraphControl1);
        }

此方法会执行具体的操作,具体操作是调用工具类中的刷新方法。

具体流程图示

 

C#中怎样跨窗体调用事件-从事件订阅实例入手_第1张图片

 

你可能感兴趣的:(C#,C#订阅事件)