【问题标题】:Why does ShowDialogue() fire Close() when setting Visible = false in Show()?为什么 ShowDialogue() 在 Show() 中设置 Visible = false 时会触发 Close()?
【发布时间】:2012-11-04 23:07:47
【问题描述】:

当我在 ShowDialogue() 显示的表单的显示事件中设置 Visible = false 时,表单将自动调用它的关闭事件。我不想关闭表单...只是隐藏它。所以我必须改为调用 Show() 。但是,这不会阻止。

为什么设置 Visible = false 会导致表单接近使用 ShowDialogue() 触发?这是一个错误吗?

【问题讨论】:

  • 隐藏一个模态对话框并期望将活动输入传回给调用者听起来像是在对系统进行操作。与其隐藏模态对话框,不如考虑将其用作模态对话框,并在需要再次显示时根据需要传递状态对象。 FWIW 隐藏模式对话框调用关闭,因为如果您能够隐藏模式对话框而不关闭它,用户将不得不结束您的应用程序的进程,因为模式仍将保持唯一焦点。
  • 稍微考虑一下。 ShowDialog() 禁用应用程序中的所有其他窗口。您隐藏了用户可以聚焦的唯一一个窗口。用户如何回到应用程序?
  • showdialogUE 真的有用吗?
  • @HansPassant - 很有趣……我遇到的很多这些问题都归结为根本问题。不检查Control.IsInvokeRequired 并采取相应行动......

标签: c# winforms


【解决方案1】:

尝试触发Show(),而不是ShowDialogue(),如果不起作用可以尝试使用Hide()或修改Opacity属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    相关资源
    最近更新 更多