C# 委托(跨窗体操作控件)实例流程讲解

 更新时间:2020年6月25日 11:42  点击:2295

效果描述:有两个窗体,FORM1(一个名为“打开form2”的button控件)和FORM2(一个名为“改变form1颜色“的button控件)。启动时,FORM1中点击button控件“打开form2””使FORM2显示出来。点击FORM2中的“改变form1颜色”后,Form1中颜色改变。

一、在Form2里面:
       首先声明一个委托和委托实例
Form2类外

复制代码 代码如下:

public delegate void ChangeFormColor(bool topmost);

Form2类里

复制代码 代码如下:

01.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);//执行委托实例 
        } 
    } 
}

[!--infotagslink--]

相关文章

  • C#基于委托实现多线程之间操作的方法

    这篇文章主要介绍了C#基于委托实现多线程之间操作的方法,实例分析了C#的委托机制与多线程交互操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 详解C#中委托,事件与回调函数讲解

    这篇文章主要介绍了详解C#中委托,事件与回调函数讲解,小编觉得挺不错的,现在就分享给大家,也给大家做个参考。...2020-06-25
  • 快速理解MySQL中主键与外键的实例教程

    主键与外键的关系,通俗点儿讲,我现在有一个论坛,有两张表,一张是主贴 thread,一张是回帖 reply先说说主键,主键是表里面唯一识别记录的字段,一般是帖子id,体现在访问的时候,例如是 thread.php?id=1 表示我要访问的是帖子...2015-11-24
  • c# 接口使用实例

    这篇文章主要介绍了c#接口使用的实例,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-17
  • yii添删改查实例

    一、数据访问对象 (DAO)YiiDAO 基于 PHP Data Objects (PDO) 构建。它是一个为众多流行的DBMS提供统一数据访问的扩展,这些 DBMS 包括MySQL, PostgreSQL 等等。因此,要使用 Yii DAO,PDO 扩展和特定的 PDO 数据库驱动(例如...2015-11-24
  • c#基础知识---委托,匿名函数,lambda

    这篇文章主要介绍了c# 委托,匿名函数,lambda的相关知识,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-11-03
  • C#使用委托(delegate)实现在两个form之间传递数据的方法

    这篇文章主要介绍了C#使用委托(delegate)实现在两个form之间传递数据的方法,涉及C#委托的使用技巧,需要的朋友可以参考下...2020-06-25
  • C#使用委托的步骤浅析

    这篇文章主要介绍了C#使用委托的步骤,以实例形式深入浅出的讲解了C#关于委托的定义、声明、实例化及相关的用法,具有很好的参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • C#中的IEnumerable简介及简单实现实例

    这篇文章主要介绍了C#中的IEnumerable简介及简单实现实例,本文讲解了IEnumerable一些知识并给出了一个简单的实现,需要的朋友可以参考下...2020-06-25
  • 基于事件冒泡、事件捕获和事件委托详解

    这篇文章主要介绍了事件冒泡、事件捕获和事件委托,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-08
  • c#并行任务多种优化方案分享(异步委托)

    c#并行任务多种优化方案分享,使用异步委托+回调函数方式实现,大家参考使用吧...2020-06-25
  • C#中委托的基础入门与实现方法

    这篇文章主要给大家介绍了关于C#中委托的基础入门与实现方法的相关资料,究竟什么是委托,用最通俗易懂的话来讲,你就可以把委托看成是用来执行方法(函数)的一个东西,需要的朋友可以参考下...2021-08-03
  • php socket讲解与实例

    在这一章里你将了解到迷人而又让人容易糊涂的套接字(Sockets)。Sockets在PHP中是没有充分利用的功能。今天你将看到产生一个能使用客户端连接的服务器,并在客户端使用sock...2016-11-25
  • C++内核对象封装单实例启动程序的类

    这篇文章主要介绍了利用C++内核对象封装的类,程序只能运行单个实例,可防止多次启动,大家参考使用吧...2020-04-25
  • C#中委托用法实例分析

    这篇文章主要介绍了C#中委托用法,较为详细的分析了C#中委托的概念与相关的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • php 中缓冲输出实例代码

    ob_start([string output_callback])- 打开输出缓冲区   所有的输出信息不在直接发送到浏览器,而是保存在输出缓冲区里面,可选得回调函数用于处理输出结果信息。 ob...2016-11-25
  • C#中委托(Delegates)的使用方法详解

    这篇文章主要为大家详细介绍了C#中委托(Delegates)的使用方法,感兴趣的朋友可以参考一下...2020-06-25
  • Vue实例简单方法介绍

    这篇文章主要为大家详细介绍了Vue实例的一些简单方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-01-23
  • C#中委托和事件的区别实例解析

    这篇文章主要介绍了C#中委托和事件的区别,并分别以实例形式展示了通过委托执行方法与通过事件执行方法,以及相关的执行流程与原理分析,需要的朋友可以参考下...2020-06-25
  • C#用匿名方法定义委托的实现方法

    这篇文章主要介绍了C#用匿名方法定义委托的实现方法,涉及C#匿名方法与委托的相关使用技巧,需要的朋友可以参考下...2020-06-25