C#窗体之间的相互访问
1. 通过构造函数传递窗体的引用
子窗访问父窗体,要重写子窗体的构造函数,如下:
public
SForm(Form x)
... {
InitializeComponent();
PForm = x;
}
... {
InitializeComponent();
PForm = x;
}
其中Pform是在子窗体中声明一个成员(Form类)在子窗体的构造函数中从参数中取得了父窗体的引用.这样就能在子窗体中用Pform访问父窗体了.
那么父窗体应该如下这样写:
Form childForm
=
new
SForm(
this
);
childForm.MdiParent = this ;
childForm.Text = " 子窗体 " ;
childForm.Show();
childForm.MdiParent = this ;
childForm.Text = " 子窗体 " ;
childForm.Show();
在构造子窗体时,用this将自身的引用传给子窗体.
至于主窗体调用子窗体的话,什么也不用做,直接可以访问.如上边用childForm
2. 通过静态成员变量
通过窗体类在其自身中创建一个静态成员变量保存窗体的引用,亦可实现窗之间的相互访问.如下:
public
static
Form TForm
=
null
;
//
这是一个静态成员
:
:
public MyForm(Form x)
... {
InitializeComponent();
TForm = this;
}
:
:
public MyForm(Form x)
... {
InitializeComponent();
TForm = this;
}
并且如上,在窗体的构造函数中将自身的引用保存在静态成员Tform中;
那么,就可以在其它窗体中访问这个窗体了,如下:
MyForm.TForm.Text="你好中国";