【问题标题】:How to restrict accessing other child forms when a particular child form is active?当特定子表单处于活动状态时,如何限制访问其他子表单?
【发布时间】:2018-05-11 14:47:32
【问题描述】:

在我的 MDI 表单应用程序中,父表单中有一个 Browse 按钮。单击此按钮时,将显示当前激活表单的保存记录。
我的要求是当Browse 表单打开时,其他子表单不应该被访问,直到Browse 表单没有关闭。
我尝试使用 BrowseForm.ShowDialog(); 而不是 BrowseForm.Show(); 但它抛出了以下异常。

非顶级表单的表单不能显示为模式对话框。在调用 showDialog 之前从任何父窗体中删除该窗体

【问题讨论】:

  • 如果这是一个选项,请不要为浏览表单设置MdiParent,也不要将其添加到父表单的MdiChildren。然后这个异常就会消失,你就可以将它显示为一个模态对话框。
  • @defaultlocale 但我想在应用程序中打开浏览表单。
  • 嗯,有什么特别的原因吗?我的意思是,浏览表单无论如何都会阻止应用程序的其余部分,让它成为一个对话框是有意义的。
  • 我明白了。然后你需要做一些更复杂的事情:阻止/禁用所有其他 MDI 子项和/或窃取他们的焦点。查看代码项目上的这篇文章:codeproject.com/Articles/48436/…
  • 我有一个用 vb6 开发的应用程序。我发现在那个应用程序中是可能的。所以我认为在 .net 中也是可能的

标签: c# .net winforms


【解决方案1】:

要在主表单中作为子表单打开表单,请使用 Form.Show();

否则从主窗体的子窗体中删除 if 并使用 form.ShowDialog();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多