C#跨窗体相互调用对方函数

简介: 对象对象程序设计,为跨窗体调用提供了良药:即构造函数。只要将某一个窗体对象以参数形式传入到另一个窗体对象的构造函数,即可实现。 一、实际案例需求 图1 Form1窗体设计   图2 Form2窗体设计   如图1、图2,现在要求图1按下按键,自己锁住,弹出图2;然后图2按下按键,自己关闭,解放图1的按键。

对象对象程序设计,为跨窗体调用提供了良药:即构造函数。只要将某一个窗体对象以参数形式传入到另一个窗体对象的构造函数,即可实现。


一、实际案例需求


image

图1 Form1窗体设计

 

image

图2 Form2窗体设计

 

如图1、图2,现在要求图1按下按键,自己锁住,弹出图2;然后图2按下按键,自己关闭,解放图1的按键。

 

二、代码实现


  1. Form1.cs

  2. namespace Form_Invoke
  3. {
  4.     public partial class Form1 : Form
  5.     {
  6.         public Form1()
  7.         {
  8.             InitializeComponent();
  9.         }

  10.         private void button1_Click(object sender, EventArgs e)
  11.         {
  12.             Set_Button1_Enable_Attribute(false);
  13.             Form2 form2 = new Form2(this); // 关键句,构造Form2时,将Form1作为parent传进去
  14.             form2.Show();
  15.         }

  16.         public void Set_Button1_Enable_Attribute(bool isEnable)
  17.         {
  18.             this.button1.Enabled = isEnable;
  19.         }
  20.     }



  1. Form2.cs

  2. public partial class Form2 : Form
  3. {
  4.     public Form1 parent;

  5.     public Form2()
  6.     {
  7.         InitializeComponent();
  8.     }

  9.     public Form2(Form1 parent)
  10.     {
  11.         InitializeComponent();
  12.         this.parent = parent;
  13.     }

  14.     private void button1_Click(object sender, EventArgs e)
  15.     {

  16.         /* 在Form2中,通过parent调用自己的函数,实现跨窗体调用 */
  17.         this.parent.Set_Button1_Enable_Attribute(true);
  18.         this.Close();
  19.     }

  20. }

 

三、运行效果

image

图 打开Form1

 

image

图 按下Form1的按键

 

image

图 按下Form2的按键


四、案例源码上传

zip.gif Form_Invoke.zip   

相关文章
|
JavaScript 前端开发 Java
javascript实现像java、c#之类的sleep暂停的函数功能
javascript实现像java、c#之类的sleep暂停的函数功能
116 0
|
7月前
|
C#
C# 中关于补位的写法 PadLeft,PadRight 函数
C# 中的 `PadLeft` 和 `PadRight` 是 String 类提供的用于字符串补位的实用方法。`PadLeft` 在字符串左侧填充指定字符,使其达到指定长度;`PadRight` 则在右侧填充。两者通过检查原字符串长度,计算需填充字符数,并创建新字符数组完成操作。时间复杂度为 O(n),适用于简单补位场景,但在大量操作时需注意性能影响。示例代码展示了如何使用这两个方法进行补位操作。
|
10月前
|
C# Python
使用wxpython开发跨平台桌面应用,对wxpython控件实现类似C#扩展函数处理的探究
【10月更文挑战第30天】使用 `wxPython` 开发跨平台桌面应用时,可以通过创建辅助类来模拟 C# 扩展函数的功能。具体步骤包括:1. 创建辅助类 `WxWidgetHelpers`;2. 在该类中定义静态方法,如 `set_button_color`;3. 在应用中调用这些方法。这种方法提高了代码的可读性和可维护性,无需修改 `wxPython` 库即可为控件添加自定义功能。但需要注意显式调用方法和避免命名冲突。
|
开发框架 .NET 程序员
掌握C#语言的精髓:基础知识与实用技能详解(数据类型与变量+ 条件与循环+函数与模块+LINQ+异常+OOP)
掌握C#语言的精髓:基础知识与实用技能详解(数据类型与变量+ 条件与循环+函数与模块+LINQ+异常+OOP)
82 0
|
存储 C#
C#基础语法(数组和函数)
C#基础语法(数组和函数)
177 1
|
运维 编译器 C#
C# 9.0中的本地函数属性:深化函数级别的控制
【1月更文挑战第17天】C# 9.0引入了本地函数属性的概念,允许开发者在本地函数上应用属性,从而进一步细化对函数行为的控制。这一新特性不仅增强了代码的可读性和可维护性,还为函数级别的编程提供了更多的灵活性。本文将探讨C# 9.0中本地函数属性的用法、优势以及可能的应用场景,帮助读者更好地理解并应用这一新功能。
|
C#
利用最小二乘法拟合任意次函数曲线(C#)
原文:利用最小二乘法拟合任意次函数曲线(C#) ///     ///用最小二乘法拟合二元多次曲线     ///     ///已知点的x坐标集合     ///已知点的y坐标集合     ///已知点的个数     ///方程的最高次数     ...
3224 0
C#基础之Main函数
C#基础之Main函数
216 0
|
传感器 编解码 监控
Baumer工业相机堡盟工业相机如何通过BGAPISDK里的工具函数来计算工业相机的实时帧率(C#)
Baumer工业相机堡盟工业相机如何通过BGAPISDK里的工具函数来计算工业相机的实时帧率(C#)
143 0
|
C#
C#中方法函数的声明和调用
C#中方法函数的声明和调用
219 0