【问题标题】:VB.NET : How to detect a mouse click outside a focused controlVB.NET:如何检测焦点控件外的鼠标点击
【发布时间】:2015-02-10 14:07:19
【问题描述】:

我正在使用 vb.net。 我有一个具有焦点的控件(例如按钮、文本框...或其他东西)。

我想检测用户何时在此控件之外单击。

点击可能是:

  • 在另一个可以获得焦点的控件上(例如文本框...)。

  • 在另一个无法获得焦点的控件上(例如面板...)

  • 在表格上。

有什么通用的方法可以检测到这种情况:一个控件有焦点,用户点击外面

谢谢!

【问题讨论】:

  • 你的意思是onClick() 吗?
  • 使用lostfocus()..它检测焦点何时离开控件..
  • lostfocus 没有做我想要的,因为当控件获得焦点并且用户单击无法获得焦点的面板时,例如,控件保持焦点并且事件将不开火。

标签: vb.net


【解决方案1】:

不是内置的,但我相信它可以做到 -- 使用 AddHandler 控件。单击所有控件,除了您想知道何时单击其他内容的控件。

Sub RegisterControls(cntrl as Control)
   For Each c as Control in cntrl
      AddHandler c.click, AddressOf Whatever
      If c.Controls.Count >0 Then RegisterControls(c)
   Next
End Sub

【讨论】:

  • 对不起,但我希望这个解决方案对每个控件都是通用的。所以对于每个可以有焦点的控件,我想要这个行为:如果这个控件有焦点并且用户在这个控件之外点击我想检测这个事件。
  • @alex:那么您希望以上内容为起点。无论您做什么,您都需要以某种方式捕获所有点击事件。
  • 我在想有没有办法捕捉鼠标点击(不是特定控件的点击事件)并计算是否不在特定控件内?
  • @alex:有一些方法可以测试鼠标按钮是否按下,这与单击不同。如果您捕获所有点击事件,您可以测试并在此或该控件具有焦点时执行适当的操作。
  • windows 消息拦截点击怎么样?这可能吗?
猜你喜欢
  • 2021-03-28
  • 2011-11-21
  • 2020-04-18
  • 2018-03-17
  • 1970-01-01
  • 2017-04-10
  • 1970-01-01
  • 2021-09-06
相关资源
最近更新 更多