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

四种方案解决Form之间相互访问、参数传递的问题
 
      /* **************************************************************************
      *     
      *     时    间:2006-05-01
      *     程序演示:C#中窗口间的相互访问、参数传递
      *     问题叙述:
      *         如何在一个窗口中访问另一个窗口的成员变量啊?    
      *         例如:在Form1   中   new   了一个Form2  
      *         我想在Form2中来访问Form1中的成员变量A  
      *         该如何写代码啊??  
      *         最关键的是如何获取Form1的实例.
      *     解决方案1:
      *         如果是在两个无关的窗体间要实现上述的访问可以使用Form的Owenr属性
       *          Form1 中添加 :  
      *         Form2   form2   =   new   Form2();  
      *         this.AddOwnedForm(form2);  
      *         Form2 中添加 :
      *         Form1   form1   =   (Form1)this.Owner;     // 直接将已经存在的 Form1 form1 关联起来
      *         之后就可以适时的访问 Form1 中的 Public 变量了。
      *         如果是在 MDI 窗体间要实现上述的访问可以使用 Form ParentForm 属性   
      *         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型别看起来有点像函数声明,但实际上它所定义的型别用来指向一个或多个函数(函数指针只指向一个函数?)
 

你可能感兴趣的:(.NET随笔)