一、方法1:

假如有两个窗体,Form_A和Form_B,每个窗体里都有一个按键,Button_A和Button_B,要实现单击Button_A显示窗体B,那么窗体A中Buttom_A的单击事件的程序应该是:

  1. private void button_A_Click(object sender, EventArgs e)
  2. {
  3. Form_B f = new Form_B();
  4. f.Show();
  5. }

如果希望单击窗体B中的按键Button_B,实现改变窗体A的背景色,那么你需要做:

1. Form_B 窗体的Class里添加如下代码:

  1. public Form_A fb;
  2. public Form_B(Form_A f)
  3. {
  4. InitializeComponent();
  5. fb = f;
  6. }
  7.  
  8. private void button_B_Click(object sender, EventArgs e)
  9. {
  10. fb.BackColor = Color.Brown;
  11. }

2. Form_A窗体中的Button_A单击事件变成:

  1. private void button_A_Click(object sender, EventArgs e)
  2. {
  3. Form_B f = new Form_B(this);
  4. f.Show();
  5. }

完整程序如下

Form_A:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace formExam
  11. {
  12. public partial class Form_A : Form
  13. {
  14. public Form_A()
  15. {
  16. InitializeComponent();
  17. }
  18.  
  19. private void Button_A_Click(object sender, EventArgs e)
  20. {
  21. Form_B f = new Form_B(this);
  22. f.Show();
  23. }
  24.  
  25. private void Form_A_Load(object sender, EventArgs e)
  26. {
  27.  
  28. }
  29. }
  30. }

Form_B:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace formExam
  11. {
  12. public partial class Form_B : Form
  13. {
  14. public Form_A fb;
  15. public Form_B(Form_A f)
  16. {
  17. InitializeComponent();
  18. fb = f;
  19. }
  20.  
  21. private void Button_B_Click(object sender, EventArgs e)
  22. {
  23. fb.BackColor = Color.Brown;
  24. }
  25. }
  26. }

二、方法2:通过委托实现

1. 在Form_B的Class外定义一个委托类型

  1. public delegate void ChangeFormColor();

2. 在Form_B的Class内定义委托的方法

  1. public event ChangeFormColor ChangeColor;

3. Button_B单击事件为

  1. private void Button_B_Click(object sender, EventArgs e)
  2. {
  3. ChangeColor();
  4. }

4. Form_A中的单击事件为

  1. private void Button_A_Click(object sender, EventArgs e)
  2. {
  3. Form_B f = new Form_B();
  4. f.ChangeColor += new ChangeFormColor(f_ChangeColor);
  5. f.Show();
  6. }

5. 编写改变Form_A 背景色的方法

  1. void f_ChangeColor()
  2. {
  3. this.BackColor = Color.Brown;
  4. }

完整程序如下:

Form_A:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace formExam
  11. {
  12. public partial class Form_A : Form
  13. {
  14. public Form_A()
  15. {
  16. InitializeComponent();
  17. }
  18.  
  19. private void Button_A_Click(object sender, EventArgs e)
  20. {
  21. Form_B f = new Form_B();
  22. f.ChangeColor += new ChangeFormColor(f_ChangeColor);
  23. f.Show();
  24. }
  25.  
  26. void f_ChangeColor()
  27. {
  28. this.BackColor = Color.Brown;
  29. }
  30. }
  31. }

Form_B:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace formExam
  11. {
  12. public delegate void ChangeFormColor();
  13.  
  14. public partial class Form_B : Form
  15. {
  16. public event ChangeFormColor ChangeColor;
  17. public Form_B()
  18. {
  19. InitializeComponent();
  20. }
  21.  
  22. private void Button_B_Click(object sender, EventArgs e)
  23. {
  24. ChangeColor();
  25. }
  26. }
  27. } 

[C# 学习]窗体间调用控件的更多相关文章

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

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

  2. 【机房系统知识小结点系列】之遍历窗体中的控件,判断Text是否为空?

    做机房系统时,几乎每个窗体中都会用到判断界面中的控件是否为空的情景.我们曾经是这样走来的: 第一版: 好处:对窗体界面中的Text等控件,逐一做判断,当用户输入某一项为空的时候,会议弹出框的形式,告诉 ...

  3. C# 跨线程调用控件

    在C# 的应用程序开发中, 我们经常要把UI线程和工作线程分开,防止界面停止响应.  同时我们又需要在工作线程中更新UI界面上的控件, 下面介绍几种常用的方法 阅读目录 线程间操作无效 第一种办法:禁 ...

  4. [译]- 6-1 排列窗体上的控件(Laying Out Widgets on a Form)

     排列窗体上的控件(Laying Out Widgets on a Form) 中英文对照:form(窗体),layout(布局或者排列,意思是进行窗体上控件的排列的过程,如大小位置等) absolu ...

  5. WPF中不规则窗体与WindowsFormsHost控件的兼容问题完美解决方案

    首先先得瑟一下,有关WPF中不规则窗体与WindowsFormsHost控件不兼容的问题,网上给出的解决方案不能满足所有的情况,是有特定条件的,比如  WPF中不规则窗体与WebBrowser控件的兼 ...

  6. 【转载】C# 跨线程调用控件

    转自:http://www.cnblogs.com/TankXiao/p/3348292.html 感谢原作者,转载以备后用 在C# 的应用程序开发中, 我们经常要把UI线程和工作线程分开,防止界面停 ...

  7. 使用Invoke解决多线程间的控件访问出错

    // 按钮点击事件处理程序private void button1_Click(object sender, EventArgs e){    //创建新线程    Thread processorT ...

  8. C# 跨线程调用控件的4中方法

    原文:C# 跨线程调用控件 在C# 的应用程序开发中, 我们经常要把UI线程和工作线程分开,防止界面停止响应.  同时我们又需要在工作线程中更新UI界面上的控件, 下面介绍几种常用的方法 阅读目录 线 ...

  9. Android 使用代码主动去调用控件的点击事件(模拟人手去触摸控件)

    使用代码主动去调用控件的点击事件(模拟人手去触摸控件) //View 可以是LinearLayout,Button,TextView View.performClick();

随机推荐

  1. CF312A Whose sentence is it? 题解

    Content \(\texttt{Freda}\) 和 \(\texttt{Rainbow}\) 在网上聊了 \(n\) 句话.我们根据他们聊天的语句的特点来判断每一句是谁说的.\(\texttt{ ...

  2. Ribbon——负载均衡

    一.什么是Ribbon Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起.Ribbon客户端组件提供一系列完善的配置项如连接超 ...

  3. HTTPS握手-混合加解密过程

    SSL协议通信过程 (1) 浏览器发送一个连接请求给服务器;服务器将自己的证书(包含服务器公钥S_PuKey).对称加密算法种类及其他相关信息返回客户端; (2) 客户端浏览器检查服务器传送到CA证书 ...

  4. 有时候错误很奇怪啊,Comparator问题

    有时候错误很奇怪啊,Comparator问题,在我的电脑上排序好用,但是在别的电脑上排序不好用, 真奇怪a

  5. 总结Vue第二天:自定义子组件、父子组件通信、插槽

    总结Vue第二天:自定义子组件.父子组件通信.插槽 一.组件: 组件目录 1.注册组件(全局组件.局部组件和小demo) 2.组件数据存放 3.父子组件通信(父级向子级传递数据.子级向父级传递数据) ...

  6. JAVA实现websocket客户端

    pom依赖 <dependency> <groupId>org.java-websocket</groupId> <artifactId>Java-We ...

  7. SpringBoot 整合MinIO

    引入依赖 <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifact ...

  8. JAVA微信支付——微信公众号内支付 代码

    官方文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1 微信PC二维码支付方式参考:https://www.cnblogs. ...

  9. 【LeetCode】266. Palindrome Permutation 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典 日期 题目地址:https://leetcode ...

  10. 【LeetCode】7. Reverse Integer 整数反转

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 公众号:负雪明烛 本文关键词:整数,反转,题解,Leetcode, 力扣,Python, ...