[C# 学习]窗体间调用控件
一、方法1:
假如有两个窗体,Form_A和Form_B,每个窗体里都有一个按键,Button_A和Button_B,要实现单击Button_A显示窗体B,那么窗体A中Buttom_A的单击事件的程序应该是:
- private void button_A_Click(object sender, EventArgs e)
- {
- Form_B f = new Form_B();
- f.Show();
- }
如果希望单击窗体B中的按键Button_B,实现改变窗体A的背景色,那么你需要做:
1. Form_B 窗体的Class里添加如下代码:
- public Form_A fb;
- public Form_B(Form_A f)
- {
- InitializeComponent();
- fb = f;
- }
- private void button_B_Click(object sender, EventArgs e)
- {
- fb.BackColor = Color.Brown;
- }
2. Form_A窗体中的Button_A单击事件变成:
- private void button_A_Click(object sender, EventArgs e)
- {
- Form_B f = new Form_B(this);
- f.Show();
- }
完整程序如下
Form_A:
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- namespace formExam
- {
- public partial class Form_A : Form
- {
- public Form_A()
- {
- InitializeComponent();
- }
- private void Button_A_Click(object sender, EventArgs e)
- {
- Form_B f = new Form_B(this);
- f.Show();
- }
- private void Form_A_Load(object sender, EventArgs e)
- {
- }
- }
- }
Form_B:
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- namespace formExam
- {
- public partial class Form_B : Form
- {
- public Form_A fb;
- public Form_B(Form_A f)
- {
- InitializeComponent();
- fb = f;
- }
- private void Button_B_Click(object sender, EventArgs e)
- {
- fb.BackColor = Color.Brown;
- }
- }
- }
二、方法2:通过委托实现
1. 在Form_B的Class外定义一个委托类型
- public delegate void ChangeFormColor();
2. 在Form_B的Class内定义委托的方法
- public event ChangeFormColor ChangeColor;
3. Button_B单击事件为
- private void Button_B_Click(object sender, EventArgs e)
- {
- ChangeColor();
- }
4. Form_A中的单击事件为
- private void Button_A_Click(object sender, EventArgs e)
- {
- Form_B f = new Form_B();
- f.ChangeColor += new ChangeFormColor(f_ChangeColor);
- f.Show();
- }
5. 编写改变Form_A 背景色的方法
- void f_ChangeColor()
- {
- this.BackColor = Color.Brown;
- }
完整程序如下:
Form_A:
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- namespace formExam
- {
- public partial class Form_A : Form
- {
- public Form_A()
- {
- InitializeComponent();
- }
- private void Button_A_Click(object sender, EventArgs e)
- {
- Form_B f = new Form_B();
- f.ChangeColor += new ChangeFormColor(f_ChangeColor);
- f.Show();
- }
- void f_ChangeColor()
- {
- this.BackColor = Color.Brown;
- }
- }
- }
Form_B:
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- namespace formExam
- {
- public delegate void ChangeFormColor();
- public partial class Form_B : Form
- {
- public event ChangeFormColor ChangeColor;
- public Form_B()
- {
- InitializeComponent();
- }
- private void Button_B_Click(object sender, EventArgs e)
- {
- ChangeColor();
- }
- }
- }
[C# 学习]窗体间调用控件的更多相关文章
- C#跨窗体调用控件(委托回调函数使用例子)
问题: 有两个窗体,FORM1(含一个label控件,一个名为显示form2的button控件)和FORM2(含一个button控件).启动时,FORM1中点击button控件显示form2使FORM ...
- 【机房系统知识小结点系列】之遍历窗体中的控件,判断Text是否为空?
做机房系统时,几乎每个窗体中都会用到判断界面中的控件是否为空的情景.我们曾经是这样走来的: 第一版: 好处:对窗体界面中的Text等控件,逐一做判断,当用户输入某一项为空的时候,会议弹出框的形式,告诉 ...
- C# 跨线程调用控件
在C# 的应用程序开发中, 我们经常要把UI线程和工作线程分开,防止界面停止响应. 同时我们又需要在工作线程中更新UI界面上的控件, 下面介绍几种常用的方法 阅读目录 线程间操作无效 第一种办法:禁 ...
- [译]- 6-1 排列窗体上的控件(Laying Out Widgets on a Form)
排列窗体上的控件(Laying Out Widgets on a Form) 中英文对照:form(窗体),layout(布局或者排列,意思是进行窗体上控件的排列的过程,如大小位置等) absolu ...
- WPF中不规则窗体与WindowsFormsHost控件的兼容问题完美解决方案
首先先得瑟一下,有关WPF中不规则窗体与WindowsFormsHost控件不兼容的问题,网上给出的解决方案不能满足所有的情况,是有特定条件的,比如 WPF中不规则窗体与WebBrowser控件的兼 ...
- 【转载】C# 跨线程调用控件
转自:http://www.cnblogs.com/TankXiao/p/3348292.html 感谢原作者,转载以备后用 在C# 的应用程序开发中, 我们经常要把UI线程和工作线程分开,防止界面停 ...
- 使用Invoke解决多线程间的控件访问出错
// 按钮点击事件处理程序private void button1_Click(object sender, EventArgs e){ //创建新线程 Thread processorT ...
- C# 跨线程调用控件的4中方法
原文:C# 跨线程调用控件 在C# 的应用程序开发中, 我们经常要把UI线程和工作线程分开,防止界面停止响应. 同时我们又需要在工作线程中更新UI界面上的控件, 下面介绍几种常用的方法 阅读目录 线 ...
- Android 使用代码主动去调用控件的点击事件(模拟人手去触摸控件)
使用代码主动去调用控件的点击事件(模拟人手去触摸控件) //View 可以是LinearLayout,Button,TextView View.performClick();
随机推荐
- CF312A Whose sentence is it? 题解
Content \(\texttt{Freda}\) 和 \(\texttt{Rainbow}\) 在网上聊了 \(n\) 句话.我们根据他们聊天的语句的特点来判断每一句是谁说的.\(\texttt{ ...
- Ribbon——负载均衡
一.什么是Ribbon Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起.Ribbon客户端组件提供一系列完善的配置项如连接超 ...
- HTTPS握手-混合加解密过程
SSL协议通信过程 (1) 浏览器发送一个连接请求给服务器;服务器将自己的证书(包含服务器公钥S_PuKey).对称加密算法种类及其他相关信息返回客户端; (2) 客户端浏览器检查服务器传送到CA证书 ...
- 有时候错误很奇怪啊,Comparator问题
有时候错误很奇怪啊,Comparator问题,在我的电脑上排序好用,但是在别的电脑上排序不好用, 真奇怪a
- 总结Vue第二天:自定义子组件、父子组件通信、插槽
总结Vue第二天:自定义子组件.父子组件通信.插槽 一.组件: 组件目录 1.注册组件(全局组件.局部组件和小demo) 2.组件数据存放 3.父子组件通信(父级向子级传递数据.子级向父级传递数据) ...
- JAVA实现websocket客户端
pom依赖 <dependency> <groupId>org.java-websocket</groupId> <artifactId>Java-We ...
- SpringBoot 整合MinIO
引入依赖 <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifact ...
- JAVA微信支付——微信公众号内支付 代码
官方文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1 微信PC二维码支付方式参考:https://www.cnblogs. ...
- 【LeetCode】266. Palindrome Permutation 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典 日期 题目地址:https://leetcode ...
- 【LeetCode】7. Reverse Integer 整数反转
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 公众号:负雪明烛 本文关键词:整数,反转,题解,Leetcode, 力扣,Python, ...