C#问题:动态禁用MDIParent表单中的ToolStripMenuItems / ToolStripButtons:哪个事件?

时间:2010-04-27 19:49:36

标签: c# winforms toolstripbutton

对于以下问题的任何指导将不胜感激。我应该在哪个MDIParent事件中禁用项目/按钮?活性?在程序启动时,我想要禁用按钮。如果没有活动的MDIChildren,我想要禁用按钮。当我启动子表单时,我想测试该子表单的数据。如果是空白表格,我希望按钮保持禁用状态。我目前在MdiChildActivated事件处理程序中有我的代码。谢谢你的时间。

2 个答案:

答案 0 :(得分:0)

我使用Activate Event禁用所有项目/按钮。在MDIChildActive事件中,我测试一个空白表单。如果不是空白,我启用项目/按钮。

答案 1 :(得分:-1)

我会使用MDI Parent表单的MdiChildActivate事件: http://msdn.microsoft.com/en-us/library/system.windows.forms.form.mdichildactivate.aspx

请注意该页面上的评论:

您可以使用此事件执行更新MDI子窗体内容和更改 MDI父窗体中可用的菜单选项等任务,具体取决于MDI子窗体的状态,即:激活。

另请注意,关闭子项时也会调用此事件(来自MSDN): 在MDI应用程序中激活多文档界面(MDI)子窗体或关闭时发生。

这意味着在这种情况下你可以做类似的事情:

menuButton.Enabled =(this.MdiChildren.Length> 0);

或者,如果您需要检查所有子窗体的某些条件,并且如果其中一个子窗口需要启用按钮,则启用该按钮:

    void Form1_MdiChildActivate(object sender, EventArgs e)
    {
        foreach (Form child in MdiChildren)
        {
            if (IsToolbarButtonNeededForThisForm(child))
            {
                toolButton.Enabled = true;
                break;
            }
        }
        toolButton.Enabled = false;