【问题标题】:Enabling / Disabling ToolStripMenuItem when clicked单击时启用/禁用 ToolStripMenuItem
【发布时间】:2014-03-13 04:23:38
【问题描述】:

我有两个表单(称为 form1 作为 mdi 容器和 form2),在 form1 中有一个 opentoolstripmenuitem,当 opentoolstripmenuitem 单击调用 form2 并且 opentoolstripmenuitem 被禁用时,但是当我单击 form2 右上角的 closebox 时,opentoolstripmenu 仍然禁用,我希望它在单击关闭框时再次启用。

这是我在 form1 中的代码:

private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
    openToolStripMenuItem.Enabled = false;
    Form2 newMDIChild = new Form2();
    newMDIChild.MdiParent = this;
    newMDIChild.Show();            
}

有什么建议吗??

【问题讨论】:

  • newMDIChild 上添加一个“关闭”事件处理程序,以重新启用您的菜单项。
  • 您可以在openToolStripMenuItem_Click 中以编程方式执行此操作。
  • 为什么要禁用它?如果再次单击,为什么不简单地激活打开的实例?
  • 能给我具体的代码吗?

标签: c# winforms toolstripmenu toolstripitem


【解决方案1】:

在点击处理程序中,为 Form2 的 Closing 或 Closed 事件创建一个处理程序:

newMDIChild.FormClosed += new FormClosedEventHandler(newMDIChild_FormClosed);

void newMDIChild_FormClosed(object sender, FormClosedEventArgs e)
{
        openToolStripMenuItem.Enabled = true;
}

【讨论】:

    【解决方案2】:

    简单只需在表单上使用 ShowDialog() 并在 Showdialog 后启用它

    private void openToolStripMenuItem_Click(object sender, EventArgs e)
    {
    openToolStripMenuItem.Enabled = false;
    Form2 newMDIChild = new Form2();
    newMDIChild.MdiParent = this;
    newMDIChild.ShowDialog(); 
    openToolStripMenuItem.Enabled = true;           
    }
    

    showdialog 之后的下一段代码在对话框关闭之前不会执行

    希望有效果

    谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-03
      • 2021-03-18
      • 1970-01-01
      • 2014-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多