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

所属分类: 软件编程 / C#教程 阅读数: 52
收藏 0 赞 0 分享

效果描述:有两个窗体,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);//执行委托实例 
        } 
    } 
}

更多精彩内容其他人还在看

C#中Datetimepicker出现问题的解决方法

这篇文章主要给大家介绍了关于C#中Datetimepicker出现问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

C# SQLite数据库入门使用说明

这篇文章主要给大家介绍了关于C#中SQLite数据库入门使用的相关资料,文中通过图文以及示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

C#实现批量下载图片到本地示例代码

这篇文章主要给大家介绍了关于C#如何实现批量下载图片到本地的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用c#具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

如何获取C#中方法的执行时间以及其代码注入详解

这篇文章主要给大家介绍了关于如何获取C#中方法的执行时间以及其代码注入的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
收藏 0 赞 0 分享

C#中通过LRU实现通用高效的超时连接探测

这篇文章主要介绍了c#中通过LRU实现通用高效的超时连接探测,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
收藏 0 赞 0 分享

如何使用C#将Tensorflow训练的.pb文件用在生产环境详解

这篇文章主要给大家介绍了关于如何使用C#将Tensorflow训练的.pb文件用在生产环境的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

C#程序启动项的设置方法

这篇文章主要为大家详细介绍了C#程序启动项的设置方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

c#爬虫爬取京东的商品信息

这篇文章主要给大家介绍了关于利用c#爬虫爬取京东商品信息的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们随着小编来一起学习学习吧
收藏 0 赞 0 分享

C#随机数生成字母金字塔

这篇文章主要为大家详细介绍了C#随机数生成字母金字塔,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

WPF实现窗体中的悬浮按钮

这篇文章主要为大家详细介绍了WPF实现窗体中的悬浮按钮,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享
查看更多