多个窗体间控件的调用

form2中点击按钮修改form1中按钮的值。

有很多种方法,说一个最简单的:

首先form1中把form2。show出来

 1 public Form1()
 2         {
 3             InitializeComponent();
 4         }
 5
 6         private void Form1_Load(object sender, EventArgs e)
 7         {
 8             Form2 f2 = new Form2(this);
 9             f2.Show();
10         }

form2构造函数需要接收form1对象

 1 Form1 f1;
 2         public Form2( Form1 f11)
 3         {
 4             InitializeComponent();
 5             f1 = f11;
 6         }
 7
 8         private void button1_Click(object sender, EventArgs e)
 9         {
10             f1.button1.Text = "这是F2点击的";
11         }

看看效果吧

完事!

点击此处下载Demo

时间: 2024-10-14 10:05:33

多个窗体间控件的调用的相关文章

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

Winform跨窗体操作控件是winform开发中很常见的形式,最常见且简单有效的方式便是使用委托的方式来进行操作,下面我将通过一个小实例来说明如何使用委托跨窗体实现控件操作. 实例介绍:两个窗体,Form1按钮打开Form2,然后在Form2的TextBox输入值在Form1的TextBox中显示出来. 一.项目结构 Form1窗体设计: Form2窗体设计: 二.代码实现 在Form2的代码中声明一个委托(写在Form2类外)-> public delegate void ChangeFor

Winform 获取当前单击的控件名称 和 向窗体添加控件

Winform如何获取当前单击的控件名称,比如有100个Button 和一个button_Click()的按钮事件 ,分别点击不同按钮后显示所点击的按钮名称?private void button_Click(object sender, EventArgs e) { Button button = (Button)sender; MessageBox.Show(button.Name); } 然后将要实现的按钮绑定该button_Click事件OK. 向窗体添加控件,比如添加一个Button按

C# 委托实例(跨窗体操作控件)

原文地址 http://blog.csdn.net/bdstjk/article/details/7004035 FORM1(一个名为“打开form2”的button控件) FORM2(一个名为“改变form1颜色“的button控件) 启动时,FORM1中点击button控件“打开form2””使FORM2显示出来. 点击FORM2中的“改变form1颜色”后,Form1中颜色改变. 完整代码 1 using System; 2 using System.Collections.Generic

C# 多线程修改控件时,提示在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke

一般在多线程调用UI控件时,涉及到跨线程修改UI,需要使用委托,比如如下: this.Invoke((MethodInvoker)delegate { btnRefresh.Enabled = true; }); 但是假如在多线程操作还没完成的时候,我就提前关闭窗体,则会引发InvalidOperationException,提示 “在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke” ,并且如果没有捕获到,则可能导致程序崩溃,直接关闭. 百度之后,发现需要判断控件的

在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke

今天关闭一个窗体,报出这样的一个错误"在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke.",这个不用多想,肯定是那个地方没有释放掉.既然碰到这个问题,先不说问题本身,来说说其他的一些事情.winform最常见的是datagridview这个控件,不管重写还是怎么,很多数据的操作都是用datagridview来展示的,因此,它的异步调用也算是比较多的一类了.比如:1 从数据库中读取大量数据(所谓的分页读取不在这个范畴)2 操作datagridview,然后一

C# ——窗体和控件随着分辨率的变化自适应大小

一.说明 我们自己编写程序的界面,会遇到各种屏幕分辨 率,只有自适应才能显的美观.实际上,做到这点也很简单,就是首先记录窗体和它上面控件的初始位置和大小,当窗体改变比例时,其控件的位置和大小也按此比 例变化即可.因为窗体上控件的位置和大小是相对于自己所在的窗体的,也就是所谓的窗口坐标. 在这里我们只考虑相对于自己窗体的窗口坐标更简单,也就是成比例变化.为了多个窗体共用,我在这里创建一个类AutoSizeFormClass ,1.使用它去记录窗体和其控件的初始位置和大小,2.根据窗体变化了的大小,

WinForm窗体及其控件的自适应

3步骤: 1.在需要自适应的Form中实例化全局变量   AutoSizeFormClass.cs源码在下方 AutoSizeFormClass asc = new AutoSizeFormClass(); 2.Form_Load事件中   asc.controllInitializeSize(this); 3.Page_SizeChanged事件中 asc.controlAutoSize(this); AutoSizeFormClass.cs源码如下: class AutoSizeFormCl

在C#中子线程如何操作主线程中窗体上控件

在C#中子线程如何操作主线程中窗体上控件 在C#中,直接在子线程中对窗体上的控件操作是会出现异常,这是由于子线程和运行窗体的线程是不同的空间,因此想要在子线程来操作窗体上的控件,是不可能简单的通过控件对象名来操作,但不是说不能进行操作,微软提供了Invoke的方法,其作用就是让子线程告诉窗体线程来完成相应的控件操作. 要实现该功能,基本思路如下: 把想对另一线程中的控件实施的操作放到一个函数中,然后使用delegate代理那个函数,并且在那个函数中加入一个判断,用 InvokeRequired

最佳实践扩展Windows窗体DataGridView控件 .net 4.5 附示例代码

Windows窗体DataGridView控件的性能调优.net 4.5 在处理大量数据时, DataGridView 控制可以消耗大量的内存开销,除非你仔细地使用它. 在客户有限的内存,你可以避免一些这方面的开销,避免内存成本高的特性. 你也可以管理的部分或全部数据维护和检索任务自己使用虚拟模式为了定制的内存使用情况. 在这一节中 最佳实践扩展Windows窗体DataGridView控件 描述如何使用 DataGridView 控制,避免了不必要的内存使用和在处理大量数据时的性能损失. 虚拟