处理在主窗口的toolbar_click事件
然后调用子窗口的一些公共方法进行操作

解决方案 »

  1.   

    主窗口可以处理任何一个子窗体,比如说你要在MainForm上的toolbar处理Form1里面的TextBox1:
    Form1 tmpForm = new Form1();
    foreach(Form iForm in this.MdiChildren)
    {
    if(iForm.GetType() == tmpForm.GetType()
             {
    iForm.TextBox1.Text = System.DateTime.Now.ToString();
    }
    }
      

  2.   

    仅仅给了个例子,关键是this.MdiChildren,这是主窗体里面包含的所有打开的子窗体的集合
      

  3.   

    Form1 tmpForm = new Form1();这一句是实例一个新的窗口吗?但我已经在菜单事件里已经打开了这个窗口了,而且我把所有的子窗口实例为form1,这样要怎么调用呢?
      

  4.   

    或者不要那句了
    foreach(Form iForm in this.MdiChildren)
    {
    if(iForm.GetType().ToString() == "子窗体的命名空间,默认是项目名.文件夹名.窗体名")          {
    iForm.TextBox1.Text = System.DateTime.Now.ToString();
    }
    }
      

  5.   

    To 回复人: Eddie005(暴走005) ( ) 信誉:100 那照你说的,那我在应用里是不是只能对这个窗体,进行实例一次,这样才能保证他是唯一的?
      

  6.   

    一开始给你的代码是从我的程序里拷贝出来的,目的是不让用户打开重复的窗体,所以才那样写
    private void lmAbountThis_Click(object sender, System.EventArgs e)
    {
    FormHelp.HelpForm mex = new FormHelp.HelpForm();
    this.CloseForm(ref mex);
    mex.MdiParent = this;
    mex.Show();
    }
    private void CloseForm(ref Form mForm)
    {
    Form[] tmp = this.MdiChildren;
    foreach(Form iForm in tmp)
    {
    if(iForm.GetType() == mForm.GetType())
    {
    mForm = iForm;
                                                  Break;
    }
    }
    }
      

  7.   

    To: Eddie005(暴走005) ( ) 信誉:100 您有过这样的成功案例吗?我再把我的问题,描述一遍:
    就是一般的MDI应用里,主窗口有一工具栏,他负责处理子窗口的操作,这些工具栏上的按钮可能会根据当前子窗口的不同执行不同的操作,比如说,子窗口的记录不同,要求打印不同的记录等.
      

  8.   

    楼主可以考虑应用代理(delegate)
      

  9.   

    To: xum1983(夜枭) ( ) 信誉:100 有没有sample code?