C#委托窗体间传递数据(转)
2022/1/3 14:08:00
本文主要是介绍C#委托窗体间传递数据(转),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
C#委托窗体间传递数据
转 https://blog.csdn.net/baidu_38174627/article/details/88827004
什么是委托?
一句话:委托是一个可以代理方法的特殊数据类型
首先委托是一种特殊数据类型
其次委托代理的数据不是普通数据而是方法
委托窗体间窗体数据的价值
窗体间可以共享对象(比如工控上位机实例PLC连接时只需一个)
主从窗体运行状态可以实时更新(工控上位机主要运用)
窗口运行界面
主窗体点击可以同时给从窗体加1
主窗体点击复位可以将加的值请空
从窗体点击回让主窗体加1
主窗体代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace DelegateDemo
{
public delegate void SendCount(int m); // 不在类外面 从窗体无法使用
public partial class frmMain : Form
{
// <一>.主窗体向从窗体发数据。。。。。。
// [1].主窗体向从窗体发送时委托定义在主窗体中方便
// [2].从窗体中写具体实现的方法
// [3].打开从窗体时绑定委托与方法
// [4].主窗体中写触发委托方法
SendCount send;
public frmMain()
{
InitializeComponent();
FrmOther1 frm1 = new FrmOther1();
send = frm1.ReceiveDate;
frm1.frm1Send = ReceiveData;
frm1.Show();
FrmOther2 frm2 = new FrmOther2();
frm2.frm2Send = ReceiveData;
send += frm2.ReceiveData;
frm2.Show();
}
int myCount = 1;
private void button1_Click(object sender, EventArgs e)
{
myCount++;
send?.Invoke(myCount);
}
private void button2_Click(object sender, EventArgs e)
{
send?.Invoke(0);
myCount = 1;
}
public void ReceiveData(int count)
{
labCount.Text = count.ToString();
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
从窗体1的代码如下
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace DelegateDemo
{
public partial class FrmOther1 : Form
{
public SendCount frm1Send; // 不声明为public主窗体无法使用
public FrmOther1()
{
InitializeComponent();
}
public void ReceiveDate(int count)
{
labCount.Text = count.ToString();
}
int count = 0;
private void button1_Click(object sender, EventArgs e)
{
count++;
frm1Send?.Invoke(count);
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
从窗体2的代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace DelegateDemo
{
public partial class FrmOther2 : Form
{
public FrmOther2()
{
InitializeComponent();
}
public SendCount frm2Send;
public void ReceiveData(int count)
{
labCount.Text = count.ToString();
}
int count = 0;
private void button1_Click(object sender, EventArgs e)
{
count++;
frm2Send?.Invoke(count);
}
}
}
原文链接:https://blog.csdn.net/baidu_38174627/article/details/88827004
这篇关于C#委托窗体间传递数据(转)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具