【问题标题】:How to show new form without disabling the parent form?如何在不禁用父表单的情况下显示新表单?
【发布时间】:2017-04-20 12:46:20
【问题描述】:

我在按钮上显示了一个新表单,如下所示,

当激活新的子表单时,后台父表单将被禁用。

是否有任何可用的选项来显示子表单而不禁用父表单?

问候,

【问题讨论】:

  • 如何打开新表单?
  • 使用Form.Show() 代替Form.ShowDialog()?
  • childForm.Visible 或 ChildForm.Show 或 childForm.ShowDialog
  • @MatthewWatson - Form.Show 的结果也相同。我不希望父表单被停用。即父表单看起来像是被禁用并在子表单关闭后再次激活。
  • 你可以做的最好的可能是showing the new window without stealing focus,但是新的窗口不会被聚焦。这就是 Windows(以及 Linux、Mac 等)的工作原理。

标签: c# windows winforms


【解决方案1】:

Show 函数以 非模态 形式显示表单。这意味着您可以单击父窗体。

ShowDialog 显示表单模态,这意味着您无法转到父表单

Application.Run() 运行主父窗体,并使该窗体成为主窗体。 Application.Run() 通常位于main

【讨论】:

    【解决方案2】:

    如果它被完全禁用(无法交互),您在子表单上使用.ShowDialog() 而不是.Show()。如果您使用.Show(),您将能够同时使用这两种形式

    示例:

    ChildForm childForm = new ChildForm();
    childForm.Show();
    

    【讨论】:

    • 我可以与父窗体交互,但我不希望父窗体在子激活时看起来像禁用
    • @Amal 然后给微软写一封信。说出一个满足您要求的应用程序。
    【解决方案3】:

    在您打开新表单并调用this.Activate(); 后,它将重新聚焦在父窗口上,但这会导致它在几分之一秒内失去焦点

    【讨论】:

    • 感谢您的解决方案。如果我们能防止父母失去焦点,那就更好了。
    猜你喜欢
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多