我在主窗体中有几个菜单按钮,希望通过点击菜单,执行已经显示出来的子窗体中的一些方法。
想用委托做,可是子窗体的show()和调用委托不在同一个菜单中。
大家多多帮忙亚
谢了!!

解决方案 »

  1.   

    把子窗体中的方法设为public.在MDI中找到子窗体(可以通过遍历,或是ActiveMdiChild),然后就可以调用了.
      

  2.   

    面对个别需求同意楼上的,不过最好定义interface,主窗口在打开或是调用子窗口时根所子窗口实现的接口处理
      

  3.   


    把子窗体中的方法设为public.在MDI中找到子窗体(可以通过遍历,或是ActiveMdiChild),然后就可以调用了.
    //////
    我的代码:
    private void 新建ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                f = new Form2();
                f.Name = "f " + this.MdiChildren.Length.ToString();
                f.Text = "f " + this.MdiChildren.Length.ToString();
                f.MdiParent = this;
                f.Show();
                f.ShowMes();//这儿可以,因为new了一个Form2        }        private void 分组ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                foreach (Form childForm in this.MdiChildren)
                {
                    childForm.ShowMes();//这儿不行
                }
       
            }(showMes为Public的)
      

  4.   

    foreach (Form2 childForm in this.MdiChildren)//Form 改成Form2,Form不是具体的那个窗口;
    {
    childForm.ShowMes();//
    }
    这个行了。
    委托怎么使呀
    我不想让ShowMes为Public的
      

  5.   

    既然你已经知道要用Form2 了,你就没有必要循环了.
    Form2.ShowMes();就可以了委托怎么使.////你是什么意思,你想怎样使用委托?
    我不想让ShowMes为Public的 ///你不设为public 别的类怎么使用这个方法啊.
      

  6.   

    我可能show好多的Form2,所以循环检测。
    委托不可以访问private的方法?
    那我直接就象上面讨论的,直接用不就行了。
    那委托的好处在哪呢?