代码之家  ›  专栏  ›  技术社区  ›  Shax

MDI应用程序主菜单帮助

  •  0
  • Shax  · 技术社区  · 14 年前

    我们正在开发MDI应用程序。我们需要做的是我有4个子表单和1个父表单。在父窗体工具箱菜单上,我有3个按钮。添加、保存、取消。

    我想做的是孩子表单加载的内容。单击这些按钮时,它们应该处理子窗体上的操作。

    比方说,如果名为CustomerManager的子窗体是打开的,那么通过按add按钮,它应该基本上处理我的CustomerManager子窗体。显然,我会纠正每个表单操作按钮的逻辑。

    我希望我能确定我在找什么。

    当做 沙克斯

    1 回复  |  直到 14 年前
        1
  •  0
  •   Hans Passant    14 年前

    最好通过声明一个接口来实现:

    public interface IChildCommands {
        void Add();
        void Save();
        void Cancel();
    }
    

    并让MDI子窗体实现它:

    public partial class Form2 : Form, IChildCommands {
       // Right-click IChildCommands in the editor and choose Implement Interface
       //...
    }
    

    在父级中,实现工具栏按钮的单击事件,如下所示:

        private void AddButton_Click(object sender, EventArgs e) {
            var child = this.ActiveMdiChild as IChildCommands;
            if (child != null) child.Add();
        }
    

        void Application_Idle(object sender, EventArgs e) {
            AddButton.Enabled = this.ActiveMdiChild is IChildCommands;
            // etc..
        }