【问题标题】:MDI Application Main Menu helpMDI 应用程序主菜单帮助
【发布时间】:2010-10-10 16:29:14
【问题描述】:

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

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

可以说,如果我的名为 CustomerManager 的子表单是打开的,那么通过按下添加按钮,它应该基本上处理我的 CustomerManager 子表单。显然,我会针对每个表单操作按钮纠正逻辑。

我希望我能够定义我在寻找什么。

问候 沙克斯

【问题讨论】:

    标签: c# mdi


    【解决方案1】:

    这最好通过声明一个接口来完成:

    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
       //...
    }
    

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

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

    如果孩子处于活动状态但未执行该命令,则禁用该按钮也是一个好主意。您可以通过为 Application.Idle 事件编写事件处理程序来做到这一点:

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

    【讨论】:

    • 谢谢汉斯,我会按照你的建议去做,如果发现问题会及时更新给你......
    猜你喜欢
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    相关资源
    最近更新 更多