四种方案解决Form之间相互访问、参数传递的问题

本文介绍了在不同窗体间访问成员变量的四种方法:利用Owner属性、ParentForm属性、重写构造函数传递参数及使用静态变量。每种方法均有适用场景及优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      *     问题叙述:
      *         如何在一个窗口中访问另一个窗口的成员变量啊?    
      *         例如:在Form1   中   new   了一个Form2  
      *         我想在Form2中来访问Form1中的成员变量A  
      *         该如何写代码啊??  
      *         最关键的是如何获取Form1的实例.
      *     解决方案1:
      *         如果是在两个无关的窗体间要实现上述的访问可以使用Form的Owenr属性
      *         Form1中添加:  
      *         Form2   form2   =   new   Form2();  
      *         this.AddOwnedForm(form2);  
      *         Form2中添加:
      *         Form1   form1   =   (Form1)this.Owner;     //直接将已经存在的Form1form1关联起来
      *         之后就可以适时的访问Form1中的Public变量了。
      *        如果是在MDI窗体间要实现上述的访问可以使用FormParentForm属性  
      *         Form1中添加:  
      *         Form2   form2   =   new   Form2();  
      *         form2.MdiParent   =   this;  
      *         Form2中添加:  
      *         Form1   form1   =   (Form1)this.ParentForm; //直接将已经存在的Form1(MDI主窗口)form1关联起来  
      *         之后就可以适时的访问Form1中的Public变量了
      *     解决方案2
      *         重写Form的构造函数。
      *         例如:从Form1生成Form3,
      *         只要在Form3的构造函数中添加参数,
      *         就可以将Form1中的参数传递给Form3了。
      *         这种传参的方法只能后向传递,不能Form3传给Form1
      *     解决方案3:
      *         运用静态变量。
      *         在公共变量之前加入static修饰,
      *         就可以在不同Form之间相互传递参数,
      *         还可以相互修改。
      *         这种方法的不足是:
      *         如果static修饰的成员过多,将消耗系统资源。
      *     解决方案4:
      *         运用delegate。
      *         这种方法实现技术含量高,建议首先对delegate全面了解。
      *         delegate型别看起来有点像函数声明,但实际上它所定义的型别用来指向一个或多个函数(函数指针只指向一个函数?)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值