鼠标在窗体区域外单击时关闭模态窗体

时间:2010-10-04 14:42:54

标签: c# winforms modal-dialog

当用户点击外部(计算机桌面上的任何位置)模式表单时,我想关闭一个模态表单。我们怎么能这样做作为模态形式并不意味着失去焦点。

3 个答案:

答案 0 :(得分:2)

您需要挂钩鼠标(如果需要,还需要键盘)并捕捉他们的事件。然后检查点击是否发生在表单(和区域​​)之外。如果是,请标记一个标志,该标志可由模型表格读取,可以关闭。

ALGO:

  1. 挂钩鼠标点击事件。

  2. 调用回调函数时,请检查点击位置 - 如果它位于您的表单内(您可能需要将位置转换为桌面位置 - 我希望您知道如何!)

    < / LI>
  3. 如果该点位于表单之外,请设置一个标志(布尔值或任何让您开心的事物)。确保表单能以某种方式读取标志。

  4. 触发要捕获的表单的事件。在它的处理程序中读取标志状态。如果为true,请关闭/卸载表单。

  5. This page will tell you technical details and functions.

答案 1 :(得分:1)

我认为您不需要将其设为模态...然后您可以选择在Deactivate事件中关闭它的选项。

你不需要模仿它的原因:第一次显示它时,它将具有焦点并且是最顶层的。 Modal阻止你点击其他地方,但你希望能够点击其他地方......当你这样做时,表格消失了,所以没有模态需求。

答案 2 :(得分:1)