我在WPF项目中有一个TextBox,我试图在应用程序的任何地方检测鼠标,而不是在TextBox中。
这是我到目前为止的代码。
System.Windows.Input.MouseButtonEventHandler clickOutsideHandler;
public MyClass() {
clickOutsideHandler = new System.Windows.Input.MouseButtonEventHandler(HandleClickOutsideOfControl);
}
private void StartCapture() {
System.Windows.Input.Mouse.Capture(TextBox1, System.Windows.Input.CaptureMode.SubTree);
AddHandler(System.Windows.Input.Mouse.PreviewMouseDownOutsideCapturedElementEvent, clickOutsideHandler, true);
}
private void HandleClickOutsideOfControl(object sender, System.Windows.Input.MouseButtonEventArgs e) {
ReleaseMouseCapture();
RemoveHandler(System.Windows.Input.Mouse.PreviewMouseDownOutsideCapturedElementEvent, clickOutsideHandler);
}
我遇到的问题是永远不会调用事件处理程序。我已经尝试捕获Capture()函数的返回值,但它显示为true。谁能告诉我我做错了什么?
答案 0 :(得分:1)
您可以改为使用LostFocus / LostKeyboardFocus,但窗口上必须有另一个可以获得焦点的元素。
第二种方法可以更好地完成你的工作(但并没有完全有意义)将附加到全局鼠标。 Intercept every mouse click to WPF application
然后在那个人做一个测试并确定下面的内容。https://msdn.microsoft.com/en-us/library/ms608753(v=vs.110).aspx