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

所属分类: 软件编程 / C#教程 阅读数: 83
收藏 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#实现写系统日志的方法

这篇文章主要介绍了C#实现写系统日志的方法,涉及C#针对系统日志的创建、写入及删除等技巧,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#编程实现自定义热键的方法

这篇文章主要介绍了C#编程实现自定义热键的方法,涉及C#键盘按键设置的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#实现读取被进程占用的文件实现方法

这篇文章主要介绍了C#实现读取被进程占用的文件实现方法,涉及C#进程操作及文件读取的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#获取任务栏显示进程的方法

这篇文章主要介绍了C#获取任务栏显示进程的方法,涉及C#针对进程操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#调用dos窗口获取相关信息的方法

这篇文章主要介绍了C#调用dos窗口获取相关信息的方法,涉及C#调用dos窗口及进程操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#通过Semaphore类控制线程队列的方法

这篇文章主要介绍了C#通过Semaphore类控制线程队列的方法,涉及Semaphore类操作线程队列的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#使用Dispose模式实现手动对资源的释放

这篇文章主要介绍了C#使用Dispose模式实现手动对资源的释放,涉及C#采用Dispose模式操作资源的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#动态创建button的方法

这篇文章主要介绍了C#动态创建button的方法,涉及C#按钮属性动态设置的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#编程获取资源文件中图片的方法

这篇文章主要介绍了C#编程获取资源文件中图片的方法,涉及C#针对项目中资源文件操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

WinForm实现窗体最大化并遮盖任务栏的方法

这篇文章主要介绍了WinForm实现窗体最大化并遮盖任务栏的方法,涉及C#实现WinForm窗体全屏显示的实现及调用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多