2010-12-19 45 views
3

我在WPF中构建了一个自定义控件。当我的控件处于焦点中时,我想捕捉鼠标按下事件,但用户在控件外单击。有没有办法做到这一点,如果是的话如何?wpf在我的自定义控件外捕捉鼠标

我的控件继承自ListBox。

+1

如果控件具有焦点并且任何外部点击都不会改变该焦点,那么您的控件如何失去焦点? – 2010-12-19 23:31:26

回答

7

您可以使用UIElement.CaptureMouse及其合作伙伴UIElement.ReleaseMouseCapture将所有鼠标事件捕获到单个控件,而不管事件发生时鼠标是否结束。

在你的例子中,当控件有焦点时我会捕获鼠标,当控件失去焦点时释放鼠标。

0

假设你有一个WindowTextBox就可以了。

在报名WindowMouseDown事件,

MouseDown += new MouseButtonEventHandler(Window_MouseDown); 

您可以使用下面的代码

private void Window_MouseDown(object sender, MouseButtonEventArgs e) 
{ 
    if (TextBox1.IsFocused) 
    { 
     MessageBox.Show("TextBox1 in focus."); 
    } 
} 

为了赶上这个活动,如果TextBox1对焦。