C# 委托实例(跨窗体操作控件)
来源:互联网 发布:摇粒绒 优衣库 知乎 编辑:程序博客网 时间:2024/05/24 00:08
今天研究了一下,在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);//执行委托实例
- }
- }
- }
0 0
- C# 委托实例(跨窗体操作控件)
- C# 委托实例(跨窗体操作控件)
- C# 委托实例(跨窗体操作控件)
- C# 委托实例(跨窗体操作控件)
- C# 委托实例(跨窗体操作控件)
- C# 委托实例(跨窗体操作控件)
- C# 委托实例(跨窗体操作控件)
- C# 委托实例(跨窗体操作控件)
- C# 委托实例(跨窗体操作控件)
- c# 【委托】子窗体调用父窗体控件实例
- C#跨窗体调用控件(委托回调函数)
- Winform跨窗体操作控件(使用委托)
- c# 类实例化中 委托 给窗体控件复制
- C#之线程、委托,强强联手操作窗体控件...
- C# 采用系统委托的方式处理线程内操作窗体控件
- C# 采用系统委托的方式处理线程内操作窗体控件
- C# 采用系统委托的方式处理线程内操作窗体控件
- c#经典编程实例(五使用窗体控件)
- matlab 字符串处理函数
- j2ee成长路线
- 你需要了解的SQL知识
- 新生排位赛第三场 快速幂 hash散列
- Google打不开了就进来看看
- C# 委托实例(跨窗体操作控件)
- 新的旅程
- 最长公共子列和最长公共子串。LCS && LCSL
- Iphone开发之UIView中的动画属性
- mysql使用经验
- 2014年Q1Q2教育类投融资小结
- 程序员专业英语词汇
- 鼠标图标更改
- Keywords used in resume