2015-02-10 112 views
0

我正在使用vb.net。 我有一个焦点的控件(例如一个按钮,或一个文本框......或其他)。VB.NET:如何检测集中控制之外的鼠标点击

我想检测用户何时点击此控件。

的点击可能是:

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

  • 上的另一个控件不能获得焦点(例如面板...)

  • 在窗体上。

有没有检测到这种情况的任何一般方法:控制具有焦点,用户点击外

谢谢!

+0

你的意思是'onClick()'? – 2015-02-10 05:40:43

+0

使用'lostfocus()'..它检测焦点从控件离开时.. – 2015-02-10 05:50:59

+0

lostfocus不做我想要的,因为当一个控件集中并且用户点击一个面板,例如不能得到重点,所以控制仍然集中,事件不会触发。 – alex 2015-02-10 15:10:34

回答

1

没有内置,但我相信它可以完成 - 使用AddHandler control.click控件,除了想知道什么时候点击是为了别的东西以外的所有控件。

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 
+0

对不起,但我希望这个解决方案对每个控件都是通用的。因此,对于每个可以拥有焦点的控件,我都需要这种行为:如果此控件具有焦点并且用户单击此控件的外部,我想检测此事件。 – alex 2015-02-10 15:02:42

+0

@alex:那么你想以上述为起点。无论您做什么,都需要以某种方式捕获所有点击事件。 – jmoreno 2015-02-10 15:17:27

+0

我在想有没有什么办法来捕捉鼠标点击(而不是点击特定控件的事件)并计算是否不在特定控件内? – alex 2015-02-10 15:48:52