C# 委托实例(跨窗体操作控件)
来源:互联网 发布:cda数据分析师怎么考证 编辑:程序博客网 时间:2024/05/24 00:30
PS:之前看了一些关于C#中委托的介绍,总是不能够有清晰的认识。直到前段时间自己写了个翻页控件时发现使用委托确实能带来很大的便捷,今天转的这篇文章虽说是讲的夸窗体操作控件,其实和自己在使用委托时异曲同工,而且也很简洁,如果仅仅是学习使用委托,本文不失为一个简例。
研究了一下,在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#经典编程实例(五使用窗体控件)
- leetCode解题报告之Copy List with Random Pointer
- 代码坏味及解决方案(底层重构和设计模式两个方面)
- NSRunLoop之夜
- 对于缓存的理解和分析。
- 连载:面向对象葵花宝典:思想、技巧与实践(7) - “对象”新解
- C# 委托实例(跨窗体操作控件)
- 黑马程序员_工具使用02_Xcode的快捷键及代码格式化
- C语言二叉树与队列实现基础代码
- RSHC PHP MVC框架編寫手記[2]
- java throws 用法
- 对称加密和分组加密中的四种模式(ECB、CBC、CFB、OFB)
- 【SHOI2009】善意的投票
- 畅通工程续_floyd实现
- how to intall stardict on the ubuntu