在C#里面却是可以不用自定义消息这么复杂的方法来实现跨窗体调用控件,C#有更好的办法就是委托。

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

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

  1. public delegate void ChangeFormColor(bool topmost);

Form2类里

  1. public event ChangeFormColor ChangeColor;

Form2的按钮事件中调用委托

  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3. ChangeColor(true);//执行委托实例
  4. }

二、在Form1里面:
button控件“打开form2“的click事件中有下面的代码:

  1. {
  2. Form2 f = new Form2();
  3. f.ChangeColor += new ChangeFormColor(f_ChangeColor);
  4. f.Show();
  5. }

f.ChangeColor += new ChangeFormColor(f_ChangeColor);
这句最关键,你输入到+=之后,按两下Tab,他会自动给你生成回调函数,如下:

  1. void f_ChangeColor(bool topmost)
  2. {
  3. this.BackColor = Color.LightBlue;
  4. this.Text = "改变成功";
  5. }

三、完整代码

  1. using System;
  2. using System.Drawing;
  3. using System.Windows.Forms;
  4. namespace 跨窗体调用控件
  5. {
  6. public partial class Form1 : Form
  7. {
  8. public Form1()
  9. {
  10. InitializeComponent();
  11. }
  12. private void button1_Click(object sender, EventArgs e)
  13. {
  14. Form2 f = new Form2();
  15. f.ChangeColor += new ChangeFormColor(f_ChangeColor);
  16. f.Show();
  17. }
  18. void f_ChangeColor(bool topmost)
  19. {
  20. this.BackColor = Color.LightBlue;
  21. this.Text = "改变成功";
  22. }
  23. }
  24. }
  1. using System;
  2. using System.Windows.Forms;
  3. namespace 跨窗体调用控件
  4. {
  5. public delegate void ChangeFormColor(bool topmost);
  6. public partial class Form2 : Form
  7. {
  8. public Form2()
  9. {
  10. InitializeComponent();
  11. }
  12. public event ChangeFormColor ChangeColor;
  13. private void button1_Click(object sender, EventArgs e)
  14. {
  15. ChangeColor(true);//执行委托实例
  16. }
  17. }
  18. }

最后再给大家介绍一种最简单的C#跨窗体操作

C# 委托实例(跨窗体操作控件)的更多相关文章

  1. Winform跨窗体操作控件(使用委托)

    Winform跨窗体操作控件是winform开发中很常见的形式,最常见且简单有效的方式便是使用委托的方式来进行操作,下面我将通过一个小实例来说明如何使用委托跨窗体实现控件操作. 实例介绍:两个窗体,F ...

  2. WinForm中新开一个线程操作 窗体上的控件(跨线程操作控件)

    最近在做一个winform的小软件(抢票的...).登录窗体要从远程web页面获取一些数据,为了不阻塞登录窗体的显示,开了一个线程去加载数据远程的数据,会报一个错误"线程间操作无效: 从不是 ...

  3. C#跨窗体调用控件(委托回调函数使用例子)

    问题: 有两个窗体,FORM1(含一个label控件,一个名为显示form2的button控件)和FORM2(含一个button控件).启动时,FORM1中点击button控件显示form2使FORM ...

  4. C#跨线程操作控件的最简单实现探究

    随着程序复杂度的提高,程序不可避免会出现多个线程,此时就很可能存在跨线程操作控件的问题. 跨线程操作UI控件主要有三类方式: 1.禁止系统的线程间操作检查.(此法不建议使用) 2.使用Invoke(同 ...

  5. C# 跨线程操作控件(简洁)

                                              C# 跨线程操作控件 .net 原则上禁止跨线程访问控件,因为这样可能造成错误的发生.解决此问题的方法有两个: 第一 ...

  6. winform 跨线程操作控件

    当进行winform的开发时,经常遇到用时比较久的操作,在传统的单线程程序中,用户必须等待这个耗时操作完成以后才能进行下一步的操作,这个时候,多线程编程就派上用场了,将这个耗时的操作放到一个新的子线程 ...

  7. C#跨线程操作控件

    1.首先通过按键创建子线程: 创建子线程,子线程调用changeText方法. private void btnOK_Click(object sender, EventArgs e) { Threa ...

  8. winform 跨窗体给控件传值 分类: WinForm 2014-08-02 16:33 195人阅读 评论(0) 收藏

    两个窗体 FormA,FormB; FormA窗体中有一文本框控件:TextBox; FormB窗体中有一变量:txtJSJ 目的:把变量赋值给文本框 实现: 设置TextBox属性: Modifie ...

  9. Winform中怎样跨窗体获取另一窗体的控件对象

    场景 Winform中实现跨窗体获取ZedGraph的ZedGraphControl控件对象: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/de ...

随机推荐

  1. LeetCode Binary Tree Vertical Order Traversal

    原题链接在这里:https://leetcode.com/problems/binary-tree-vertical-order-traversal/ 题目: Given a binary tree, ...

  2. CentOS7.2 编译安装SVN1.9.5客户端

    背景 原来想在Linux机上开Samba共享,在Windows机上把工作目录映射到网络驱动器,用Source Insight编辑代码后就不用来回同步文件了. 然而在使用中发现,Windows机用的SV ...

  3. Python开发【前端】:jQuery

    jQuery简介 jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架).jQuery设计的宗旨是&qu ...

  4. if语句中的判断条件(nginx)

    if语句中的判断条件   正则表达式匹配:     ==:等值比较;     ~:与指定正则表达式模式匹配时返回"真",判断匹配与否时区分字符大小写:     ~*:与指定正则表达 ...

  5. jNotify:操作结果信息提示条

    我们在提交表单后,通过Ajax响应后台返回结果,并在前台显示返回信息,jNotify能非常优雅的显示操作结果信息.jNotify是一款基于jQuery的信息提示插件,它支持操作成功.操作失败和操作提醒 ...

  6. 使用Cordova编译Android平台程序提示:Could not reserve enough space for 2097152KB object heap

    大体的意思是系统内存不够用,创建VM失败.试了网上好几种方法都不行,最后这个方法可以了: 开始->控制面板->系统->高级设置->环境变量->系统变量 新建变量: 变量名 ...

  7. 测试内容url

    nscurl --ats-diagnostics https://xxxx/xxxx/main/ curl "https://app.api.gupiaoxianji.com/v3.8/ma ...

  8. 数据结构看书笔记(二)--算法(Algorithm)简介

    算法:是解决问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作. 算法的特性:算法具有五个特性:输入.输出.有穷性.确定性.可行性 输入输出:算法具有零个或多个输入:至 ...

  9. win7&win8.1 x64位系统下在VS2010下配置MPICH2&测试&解决scanf不能输入

    1.       Mpich下载地址http://www.mpich.org/downloads/,下载mpich2-1.4.1p1-win-x86-64(32位系统请下载mpich2-1.4.1p1 ...

  10. Eclipse的安装与调试

    1.首先进入eclipse官网下载eclipse 2.根据自己的系统选择相应版本进行下载.由于我的是64bit,所以我选择64bit版下载. 3.点开下载的程序,进行安装. 4.随后进入了安装页面.和 ...