C# 委托实例(跨窗体操作控件)
来源:互联网 发布:linux下退出vi 编辑:程序博客网 时间:2024/05/24 00:03
今天研究了一下,在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#经典编程实例(五使用窗体控件)
- Linux内核--内核地址空间分布和进程地址空间
- mahout
- 【网页设计】div+css中的15个css注意事项
- SDUTOJ 2117 数据结构实验之链表二:逆序建立链表
- JSONP的方式检查用户名是否重复
- C# 委托实例(跨窗体操作控件)
- HTML5本地、离线、缓存、存储、数据库、文件
- navicat for mysql10.0.11简体中文破解版 CSDN免积分下载
- UVA - 10106 Product 第二种解法
- 6.DynamicProgramming
- c语言记录.1
- 为什么构造函数不能为虚函数
- SGU 217 Acdream 1234 Two Cylinders 自适应辛普森
- [计算机网络] 以太网数据帧(802.3)最大与最小长度