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

发布时间:2013-09-19 11:33:46来源:阅读(1757)

    四种方案解决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型别看起来有点像函数声明,但实际上它所定义的型别用来指向一个或多个函数(函数指针只指向一个函数?)

关键字Form 参数传递