C#中父窗口和子窗口之间实现控件互操作
很多人担心如何在子窗体中操作主窗体上的控件,或者如何在主窗体中操作子窗体上的控件。相比较而言,后者要简单一点,只要在主窗体中创建子窗体时,保留已创建的子窗体对象即可。
下面重点讲前一个。目前常用的方法有两种,基本相似:
首先,在主窗体类中定义一个静态成员来保存当前的主窗体对象,例如:
public static yourMainWindow pCurrentWin = null;
然后在主窗体构造函数中,初始化静态成员,如下所示:
pCurrentWin = this
然后在子窗体中调用父窗体时,可以通过“主窗体类名”来操作当前主窗体。pCurrentWin”。
第二种是在子窗体中定义一个私有成员来保存当前的主窗体对象,例如:
private your main window pParentWin = null;
然后,在子窗体构造函数中,添加一个参数,如下所示:
public your child window(yourMainWindow WinMain)
{
pParentWin = WinMain;
//其他代码
}
在主窗体中创建子窗体时,应该使用this作为参数来构造子窗体,这样就可以直接使用“this.pParentWin”来调用子窗体中的父窗体。
但是上面只允许你访问当前的主窗体对象,那么如何操作控件呢?很多人直接修改控件的成员访问器,就是把“private”改成“public”。我觉得这样破坏了自己类的封装,所以我更倾向于添加公共属性或者方法进行调用,比如:
公共字符串button text
{
get { return BTN。文本;}
set{ btn。文本=值;}
}
public void Button _ Click()
{
this . btnd convert . perform Click();//执行按钮click
}
0条评论