C#中父窗口和子窗口之间实现控件互操作

来源:互联网 发布:js base64转换成file 编辑:程序博客网 时间:2024/06/05 12:42

                                                          C#中父窗口和子窗口之间实现控件互操作

 

        最近老是让我们做一个仿照xp里记事本的小程序,其中有个查找和替换的功能,需要在查找和替换的窗口对主窗体的richtextbox空间进行操作,这就要涉及到父窗口和子窗口之间实现控件互操作,如何在子窗体中操作主窗体上的控件,或者在主窗体中操作子窗体上的控件。相比较而言,后面稍微简单一些,只要在主窗体中创建子窗体的时候,保留所创建子窗体对象即可。  


  

下面重点介绍前一种,目前常见的有两种方法,基本上大同小异 :

  第一种,在主窗体类中定义一个静态成员,来保存当前主窗体对象,例如:
public   static   yourMainWindow   pCurrentWin   =   null;
  然后在主窗体构造函数中,给静态成员初始化,如下:
pCurrentWin   =   this;
  那么在子窗体中调用父窗体,可以通过“主窗体类名.   pCurrentWin”来操作当前的主窗体。

 

  第二种,是在子窗体中定义一个私有成员,来保存当前主窗体对象,例如:

记事本 

在编辑中,点击查找替换的窗口会弹出查找替换的对话框,此时需要在替换和查找窗口对主窗口中的richtextbox进行相应的操作.

 

private void 查找ToolStripMenuItem_Click(object sender, EventArgs e)

        {

            this.searchForm = new SearchAndReplace(this);             this.searchForm.Show();

           //这里实例化了子窗体的对象,并在实例化的过程中调用了自己写的子窗体的构造函数,并且把当前的窗体(主窗体作为参数传给)

       子窗体(searchFrom)的构造函数

            this.AddOwnedForm(this.searchForm);

             //给主窗体添加一个附属窗体即searchForm

 

 

 private Form1 parentForm = null;

 然后在子窗体构造函数中,加一参数,如下:

 public SearchAndReplace(Form1 parent)

        {

            InitializeComponent();

            this.parentForm = parent;

        }

   

在主窗体创建子窗体的时候,要把this作为参数来构造子窗体,这样在子窗体中调用父窗体,可以直接用“this. parentForm ”就可以了
不过以上所作的,只是让你能够访问当前主窗体对象,那么如何操作控件,很多人直接修改控件的成员访问符,即把“private”改为“public”!

原创粉丝点击