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#中怎样跨窗体调用事件-从事件订阅实例入手的更多相关文章
- c#中如何跨线程调用windows窗体控件
c#中如何跨线程调用windows窗体控件? 我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来做这个问题,下面我将详细的介绍.首 ...
- C#跨窗体调用控件(委托回调函数使用例子)
问题: 有两个窗体,FORM1(含一个label控件,一个名为显示form2的button控件)和FORM2(含一个button控件).启动时,FORM1中点击button控件显示form2使FORM ...
- Winform中怎样跨窗体获取另一窗体的控件对象
场景 Winform中实现跨窗体获取ZedGraph的ZedGraphControl控件对象: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/de ...
- c#中如何跨线程调用windows窗体控件?
我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来做这个问题,下面我将详细的介绍.首先来看传统方法: public partial c ...
- c#跨窗体调用操作
我知道的常用的有三种,以前记录的笔记: 1.通过构造函数实现 在form1的load事件中new form2时 在构造函数里添加一个参数 此参数就是form1类型的参数,同时记得在form2里重写构 ...
- 如何安全地跨窗体调用Timer控件 从一个窗体调用控制另外一个窗体的控件
具体的情况是Form1中有一个Timer2时钟,Timer2时钟事件弹出Warning窗体,点击Warning窗体上面的按钮,重新激活一下Form1中的Timer2.从而实现了从一个窗体调用另外一个窗 ...
- Android中的跨进程调用技术AIDL
什么是AIDL Android系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信. 为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用 ...
- ThinkPHP中的跨控制器调用与框架执行流程
一.跨控制器调用 UserController.class.php <?php namespace Home/Controller use Think/Controller class User ...
- Eclipse 中java跨工程调用类
在Eclipse中,有时候需要跨工程调用其他工程中的方法.如下面有两个Java Project : 如果要在A工程中调用B工程中的类,可以将B工程添加到A工程中: A---- >Build Pa ...
随机推荐
- 函数截流---js
<div id="show">0</div> <button id="btn">click</button> & ...
- 01初识 JavaScript
1.初识 JavaScript 1.1 JavaScript 是什么 l JavaScript 是世界上最流行的语言之一,是一种运行在客户端的脚本语言 (Script 是脚本的意思) l 脚本语言 ...
- 0基础入门学习Python(第1-2章)
第一章:就这么愉快的开始吧 1.1获取Python Python3.7 1.2从idle启动 Python 3.7.3 (default, Mar 27 2019, 09:23:39)[Clang 1 ...
- centos 下创建本地镜像源,结合 nginx
1. 创建同步文件 参考清华的Centos源,配置同步文件.https://mirrors.tuna.tsinghua.edu.cn/help/centos/ [root@localhost cent ...
- ubuntu安装cairo
查看网上大神们的各种安装经过,最后google之后执行下面两句就搞定了:apt-get install python-cairo apt-get install libcairo2
- Mysql添加用户与授权
1.本地环境 CentOS Linux release 7.5.1804 (Core) mysql Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using ...
- CentOS7打开、关闭防火墙。
CentOS7 以上机器一些命令和低版本CentOS是有些差异的,本文只针对CentOS7 以上版本. CentOS7使用firewalld打开关闭防火墙与端口1.firewalld的基本使用启动: ...
- Java实现单词自定义排序|集合类、工具类排序、comparable、comparator接口
课题 针对单词进行排序,先按字母的长度排序,长者在前: 在长度相等的情况下,按字典降序排序. 例如,有单词序列"apple banana grape orange",排序后输出结果 ...
- Node.js Koa2开发微信小程序服务端
1.promise.async.await const Koa = require('koa') const app = new Koa() // 应用程序对象 有很多中间件 // 发送HTTP KO ...
- 【Spring JDBC】spring jdbc 介绍(一)
Spring JDBC模块是Spring框架的基础模块之一.在Spring JDBC模块中,所有的类可以被分到四个单独的包: core 核心包:它包含了JDBC的核心功能.此包内有很多重要的类,包括: ...