C# 委托实例(跨窗体操作控件)
来源:互联网 发布:nginx websocket 配置 编辑:程序博客网 时间:2024/06/06 13:21
今天研究了一下,在C#里面却是可以不用自定义消息这么复杂的方法来实现跨窗体调用控件,C#有更好的办法就是委托。
效果描述:有两个窗体,FORM1(一个名为“打开form2”的button控件)和FORM2(一个名为“改变form1颜色“的button控件)。启动时,FORM1中点击button控件“打开form2””使FORM2显示出来。点击FORM2中的“改变form1颜色”后,Form1中颜色改变。
一、在Form2里面:
首先声明一个委托和委托实例
Form2类外
- public delegate void ChangeFormColor(bool topmost);
Form2类里
- public event ChangeFormColor ChangeColor;
Form2的按钮事件中调用委托
- private void button1_Click(object sender, EventArgs e)
- {
- ChangeColor(true);//执行委托实例
- }
二、在Form1里面:
button控件“打开form2“的click事件中有下面的代码:
- {
- Form2 f = new Form2();
- f.ChangeColor += new ChangeFormColor(f_ChangeColor);
- f.Show();
- }
f.ChangeColor += new ChangeFormColor(f_ChangeColor);
这句最关键,你输入到+=之后,按两下Tab,他会自动给你生成回调函数,如下:
- void f_ChangeColor(bool topmost)
- {
- this.BackColor = Color.LightBlue;
- this.Text = "改变成功";
- }
三、完整代码
- using System;
- using System.Drawing;
- using System.Windows.Forms;
- namespace 跨窗体调用控件
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- private void button1_Click(object sender, EventArgs e)
- {
- Form2 f = new Form2();
- f.ChangeColor += new ChangeFormColor(f_ChangeColor);
- f.Show();
- }
- void f_ChangeColor(bool topmost)
- {
- this.BackColor = Color.LightBlue;
- this.Text = "改变成功";
- }
- }
- }
- using System;
- using System.Windows.Forms;
- namespace 跨窗体调用控件
- {
- public delegate void ChangeFormColor(bool topmost);
- public partial class Form2 : Form
- {
- public Form2()
- {
- InitializeComponent();
- }
- public event ChangeFormColor ChangeColor;
- private void button1_Click(object sender, EventArgs e)
- {
- ChangeColor(true);//执行委托实例
- }
- }
- }
最后再给大家介绍一种最简单的C#跨窗体操作
0 0
- C# 委托实例(跨窗体操作控件)
- C# 委托实例(跨窗体操作控件)
- C# 委托实例(跨窗体操作控件)
- C# 委托实例(跨窗体操作控件)
- C# 委托实例(跨窗体操作控件)
- C# 委托实例(跨窗体操作控件)
- C# 委托实例(跨窗体操作控件)
- C# 委托实例(跨窗体操作控件)
- C# 委托实例(跨窗体操作控件)
- c# 【委托】子窗体调用父窗体控件实例
- C#跨窗体调用控件(委托回调函数)
- Winform跨窗体操作控件(使用委托)
- c# 类实例化中 委托 给窗体控件复制
- C#之线程、委托,强强联手操作窗体控件...
- C# 采用系统委托的方式处理线程内操作窗体控件
- C# 采用系统委托的方式处理线程内操作窗体控件
- C# 采用系统委托的方式处理线程内操作窗体控件
- c#经典编程实例(五使用窗体控件)
- 关于错误:"ORA-04091: table is mutating, trigger/function may not see it"的分析(触发器操作自身表)
- 排序2:插入排序(折半插入排序)
- poj 3276 Face the right way(反转)
- hdu4549
- C++局部变量指针保持在List,Vector中使用的问题
- C# 委托实例(跨窗体操作控件)
- 链表,逆波兰表达式
- Duilib学习笔记《03》— 控件使用
- Add a Sensor to a Robot
- wordpress中把Kindeditor和Syntaxhighlighter整合在一起
- POJ 1502 MPI Maelstrom(最短路)
- .NET技术+25台服务器怎样支撑世界第54大网站
- win7 U盘安装ubuntu14.04
- vector , map , set