代码改变世界

窗体互操作

2005-01-18 23:40  ☆野生架构师☆  阅读(229)  评论(1)    收藏  举报

有朋友问如下一个问题:

Form1中:

this.Visible = false;              //隐藏Form1的实例

Form2 F2 = new Form2();
F2.Show();

在Form2完成相关操作后,想使

this.Close();                        //关闭F2
Form1.Visible = true;          //再显示Form1的实例

可发现在F2中无法操作Form1的实例了。

呵呵,如果你用VB6.0(及以前版本),那这根本不是问题;但在C#这强面向对象的语言中,类和实例分的很清楚,就不好办了。

有一个方法:

在Form2中:

public Form1 F1;               //Form2中声明一个Form1类型的F1

然后在Form1中:

this.Visible = false;

Form2 F2 = new Form2();
F2.F1 = this;                        //将Form1的实例整体传给Form2,当然也可以修改Form2的构造函数
                                            // Form2 F2 = new Form2(this);
F2.Show();

这时候你想在Form2中使Form1的实例显示就很容易了:

this.F1.Visible = true;

很绕口吧:)这是具体代码: Download( Form.rar 9.12KB )