场景

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#中如何跨线程调用windows窗体控件

    c#中如何跨线程调用windows窗体控件?   我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来做这个问题,下面我将详细的介绍.首 ...

  2. C#跨窗体调用控件(委托回调函数使用例子)

    问题: 有两个窗体,FORM1(含一个label控件,一个名为显示form2的button控件)和FORM2(含一个button控件).启动时,FORM1中点击button控件显示form2使FORM ...

  3. Winform中怎样跨窗体获取另一窗体的控件对象

    场景 Winform中实现跨窗体获取ZedGraph的ZedGraphControl控件对象: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/de ...

  4. c#中如何跨线程调用windows窗体控件?

    我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来做这个问题,下面我将详细的介绍.首先来看传统方法: public partial c ...

  5. c#跨窗体调用操作

    我知道的常用的有三种,以前记录的笔记: 1.通过构造函数实现 在form1的load事件中new form2时  在构造函数里添加一个参数 此参数就是form1类型的参数,同时记得在form2里重写构 ...

  6. 如何安全地跨窗体调用Timer控件 从一个窗体调用控制另外一个窗体的控件

    具体的情况是Form1中有一个Timer2时钟,Timer2时钟事件弹出Warning窗体,点击Warning窗体上面的按钮,重新激活一下Form1中的Timer2.从而实现了从一个窗体调用另外一个窗 ...

  7. Android中的跨进程调用技术AIDL

    什么是AIDL Android系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信. 为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用 ...

  8. ThinkPHP中的跨控制器调用与框架执行流程

    一.跨控制器调用 UserController.class.php <?php namespace Home/Controller use Think/Controller class User ...

  9. Eclipse 中java跨工程调用类

    在Eclipse中,有时候需要跨工程调用其他工程中的方法.如下面有两个Java Project : 如果要在A工程中调用B工程中的类,可以将B工程添加到A工程中: A---- >Build Pa ...

随机推荐

  1. Git笔记----Git仓库常见经典操作命令

    首次创建仓库上传项目操作在上一篇https://www.cnblogs.com/tk55/p/11795644.html ----好记性不如烂笔头 再次更新到仓库 不是首次更新内容或文件到远程仓库 g ...

  2. RPM包安装——手动安装

    RPM包安装 手动安装 挂载光盘 首先查看光盘是否挂载(使用mount命令) RPM包存放位置 在你光盘挂载点的Packages目录下 使用 ll | grep 关键字 可以快速找到你想要的RPM包 ...

  3. 真机调试(A valid provisioning profile for this executable was not found.)

    这个问题是因为provisioning的问题,因为真机没有加入到账号下面的原因 解决步骤 1.吧identifier复制然后再平开开发中心 2.点击+号添加设备保存 3.在develope中选中保存即 ...

  4. oracle数据库不小心删除了数据

    1.select * from SYS_DICT as of timestamp to_timestamp('2019-11-05 10:00:00','yyyy-mm-dd hh24:mi:ss') ...

  5. 鲜贝7.3--mysql 下载小问题

    安装mysql 5.7.20 及报错 This application requires Visual Studio 2013 Redistributable 问题原因大体是mysql自动安装的Vis ...

  6. CF358D Dima and Hares

    CF358D Dima and Hares 洛谷评测传送门 题目描述 Dima liked the present he got from Inna very much. He liked the p ...

  7. angular跳转和传参

    使用routerLink跳转 <a routerLink=["/exampledetail",id]></a> <a routerLink=[&quo ...

  8. nextjs作为koa中间件的使用

    react客户端渲染的缺点:首屏速度慢,对SEO不友好 浏览器请求步骤                                                        客户端跳转 1. ...

  9. arduino (3) 控制sim900A发送短信

    狗屎佳世通旗舰店,卖的什么破玩意sim900a芯片,不支持联通卡,还生明模块支持双卡的 之前买的esp8266-07都是内存偷工减料 买的液体浊度传感器给的原理图也不给基本接线. 差评垃圾店,你敢卖就 ...

  10. BDFramework.Core 学习

    x哥(懂的都懂)的框架, 拿点代码过来做注释. 想了解详情可以去他的github https://github.com/yimengfan/BDFramework.Core # Object file ...