【发布时间】:2018-11-14 06:59:43
【问题描述】:
我们有一些没有边框/没有工具箱(覆盖)的表单
每当用户点击底层窗口中的其他位置时,覆盖表单就会发送到后台(常规的非模态表单行为)
是否有一个事件,所以“覆盖”可以检测到它的可见性变化并自行关闭?
也许它可以在 resize/paint 事件中处理,在哪里可以捕捉到“隐形”?
背景: 典型的“选择或创建”用例。单击“加号”显示微小的创建形式。目前它是“最上面的”,所以用户需要点击“Escape”来摆脱它。 (否则会有一堆“背景覆盖”,因此问题)
如果点击其他东西关闭“小表单”会更“用户友好”:
【问题讨论】:
-
Form.Deactivate?
-
@TnTinMn Form.Deactivate!
-
将弹出表单更改为
TopLevel = false;并尝试使用此示例:How to create drop down information box in C# Winforms? -
@LarsTech 是的,ofc。它不再是“TopLevel”。这只是一种解决方法,以避免在用户单击“其他地方”时将大量叠加层发送到后台。
-
我认为你错过了我的观点。当用户单击其他位置时,使用 ToolStripControlHost 的弹出控件将为您关闭弹出窗口。它也不会停用您的主窗体。