我正在WPF中构建自定义控件。当我的控件处于焦点但用户在控件外部点击时,我想捕捉鼠标按下事件。有没有办法做到这一点,如果是这样的话?
我的控件继承自ListBox。
答案 0 :(得分:7)
您可以使用UIElement.CaptureMouse
及其合作伙伴UIElement.ReleaseMouseCapture
将所有鼠标事件捕获到单个控件,而不管事件发生时鼠标是什么。
在您的示例中,我将在控件具有焦点时捕获鼠标,并在控件失去焦点时释放鼠标。
答案 1 :(得分:0)
假设您有一个Window
,其中包含TextBox
。
注册Window
的{{1}}事件,
MouseDown
您可以使用以下代码
MouseDown += new MouseButtonEventHandler(Window_MouseDown);
如果private void Window_MouseDown(object sender, MouseButtonEventArgs e)
{
if (TextBox1.IsFocused)
{
MessageBox.Show("TextBox1 in focus.");
}
}
成为焦点,请抓住此事件。