2010-12-19 73 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對焦。