一、方法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. java 多线程 Thread.join子线程结束父线程再运行;join(long):等待超时毫秒数

    Join的使用 目的:当子线程运行结束后,父线程才能再继续运行 /** * @ClassName ThreadJoinExample * @projectName: object1 * @author ...

  2. .net 程序通过 crontab 无法启动,手动执行脚本可以启动

    一.问题描述 .net 网关程序需要设置定时重启,按照日常操作先把正在运行的 PID kill 掉后,再执行启动服务. 把脚本放到 crontab 计划任务上,可以把服务 PID kill 掉,但无法 ...

  3. JAVA中价格金额的存储类型

    在java项目中,我们会遇到价格.金额的数据,这时候我们java中应该用BigDecimal类型,数据库用decimal类型, 长度可以自定义, 如18; 小数点我们项目中用的是2, 保留2位小数. ...

  4. C库函数将字符串转大小写

    头文件 #include <algorithm> transform 函数 转大写 std::string str_write; // 全部转为大写 std::transform(str_ ...

  5. nim_duilib(11)之menu(1)

    introduction 更多控件用法,请参考 here 和 源码. 本文的代码基于这里 本文将介绍menu控件 xml文件添加代码 基于上一篇, 继续向basic.xml中添加下面的代码. xml完 ...

  6. C++基础之自增和自减运算符的重载

    1. 格式 1.1 分为前置和后置格式: int x = 0; int y = 0; // 后置自增运算符 x++; // 前置自增运算符 ++x; // 后置自减运算符 y--; // 前置自减运算 ...

  7. 【LeetCode】1432. 改变一个整数能得到的最大差值 Max Difference You Can Get From Changing an Integer

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

  8. 【LeetCode】281. Zigzag Iterator 解题报告 (C++)

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

  9. 【LeetCode】869. Reordered Power of 2 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典统计每位数字出现的次数 日期 题目地址:http ...

  10. codeforce-601A. The Two Routes(最短路)

    题意: 给你N个点表示N个站,有汽车和火车,汽车只能走公路,火车只能走铁路. 然后给你M条双向路,代表这两个点之间有铁路连接. 然后告诉你如果两个点之间没有铁路,那么就是公路连接. 问你汽车和火车都到 ...