【问题标题】:Deactiavte event seems to consume mouse click停用事件似乎消耗鼠标点击
【发布时间】:2013-12-06 14:09:11
【问题描述】:

我有使用

显示的非模态表单
myform.Show()

每当用户单击表单外的某个位置时,我都会关闭表单。我通过处理表单上的 Deactivate 事件成功地做到了这一点。这样做:

private void myform_Deactivate(object sender, EventArgs e) {
    this.Close();
}

我在此表单下方有一个自定义日历。我希望用户能够点击日历中的另一天,弹出表单会自动消失。当前,当调用 Deactivate 事件时,似乎消耗了鼠标单击。即,底层日历控件不接收鼠标单击。现在用户必须单击一次以停用(关闭)表单,然后再选择一天。我想一键完成这一切。

我希望能够做类似的事情

e.handled = false

在我的 Deactiavte 处理程序中,但这当然不是一个选项。帮助任何人?

【问题讨论】:

    标签: c# winforms mouseevent


    【解决方案1】:

    鼠标事件是 myForm 的一部分,而不是您在其中进行日历的其他表单,如果您需要在 this.close() 之前在其他表单上触发此事件,您将在日历表单上调用一个方法,强制单击鼠标事件

    【讨论】:

    • 但是如果我不处理表单中的停用事件,下面的日历会得到点击(当然窗口现在保持打开状态)。该表单不是模态表单,因此如果我单击其他地方,鼠标事件似乎不应该是表单的一部分。
    猜你喜欢
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 2019-01-15
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    相关资源
    最近更新 更多