博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c# WinForm通过委托事件实现winform窗体之间的互相刷新
阅读量:3949 次
发布时间:2019-05-24

本文共 1614 字,大约阅读时间需要 5 分钟。

存在这样一种需求:父窗口A创建了子窗口B,B在显示处理的的时候,需要把一些信息的信息刷新到A上,但是WinForm一般不允许直接通过A的对象刷新,况且B都不知道是谁调用的它(不知道父窗口是谁)。

一般利用委托实现

如下示例:

新建winform窗体Form1和Form2;

接下来要通过点击Form2的按钮,实现Form1界面的同步刷新。

先展示一下最终效果:

1.Form1界面如下:

在这里插入图片描述

2.点击按钮弹出Form2,界面如下:

在这里插入图片描述

3.点击Form2按钮弹出提示框,点击“是”实现Form1的同步刷新:

在这里插入图片描述

4.Form1窗体刷新,label文本变更:

在这里插入图片描述

最终展示效果大致是这样,很简单,原理也很清晰,下面我们来看一下具体的实现代码:

1.首先在Form2窗体中声明一个委托事件,并在Form2点击按钮事件中调用委托事件。

using System;using System.Windows.Forms;namespace FormRefresh{
public partial class Form2 : Form {
public delegate void RefreshDelegate(); // 子窗口声明定义委托 refresh() public event RefreshDelegate refresh; public Form2() {
InitializeComponent(); } private void button1_Click(object sender, EventArgs e) {
if (MessageBox.Show("确定刷新form1吗?","提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) {
this.Close(); this.refresh(); // 调用委托 } } }}

2.在Form1中自定义页面刷新事件,实例化Form2窗体时调用刷新事件。

using System;using System.Windows.Forms;namespace FormRefresh{
public partial class Form1 : Form {
public Form1() {
InitializeComponent(); } private void button1_Click(object sender, EventArgs e) {
Form2 form2 = new Form2(); form2.refresh += RefreshForm; // 父窗口加入委托 form2.Show(); } public void RefreshForm()// 父窗口 定义 委托具体逻辑 {
this.label1.Text = "我是刷新后的label文本"; } }}

我这边RefreshForm方法体只实现了label的刷新,如果要刷新窗体,则如下:

public void RefreshForm(){
this.Init();}

转载地址:http://pjkzi.baihongyu.com/

你可能感兴趣的文章
1015 德才论 (25 分)
查看>>
1016 部分A+B (15 分)
查看>>
1017 A除以B (20 分)
查看>>
1019 数字黑洞 (20 分)
查看>>
1032 挖掘机技术哪家强 (20 分)
查看>>
今夕何夕 HDU - 6112 ( 模拟 )
查看>>
Dividing HDU - 1059 ( 多重背包 - 二进制简化 )
查看>>
Robberies HDU - 2955 ( 0-1背包 )
查看>>
FATE HDU - 2459 ( 二维完全背包 )
查看>>
B. Working out CodeForces - 429B (动态规划)
查看>>
10635 - Prince and Princess UVA-10635 (最长公共子序列的O(nlogn)的解法:LCS转换为LIS)
查看>>
Sizeof和Strlen
查看>>
lower_bound和upper_bound
查看>>
Subsequence POJ - 3061 ( 尺取法 )
查看>>
常见HTTP状态码大全
查看>>
这16个数据可视化案例,惊艳了全球数据行业
查看>>
大数据死亡率报告揭秘:SUV与轿车到底谁更危险?
查看>>
2017年网络流行语TOP20 , 没用过算我输!
查看>>
看完这13张图,不得不佩服还是外国人会玩人工智能
查看>>
从零开始用Python构造决策树(附公式、代码)
查看>>