WPF弹出窗口捕获鼠标双击事件

时间:2009-10-29 23:09:50

标签: c# wpf .net-3.5 popup mouseevent

在我的主应用程序窗口中,有一些控件,每个控件都会打开一个弹出窗口,向用户显示更多控件。

主应用程序窗口中的其他控件具有moused双击事件处理程序。我的问题是,当用户双击弹出窗口时,弹出窗口后面的控件正在接收moused双击事件。

我已经尝试将moused双击事件处理程序添加到弹出窗口的父级,并处理该事件,但它仍然会进入主应用程序窗口。

    private void ParentControl_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        e.Handled = true;
    }

我也尝试在弹出窗口中的MouseEnter事件处理程序中调用Popup.CaptureMouse(),但该方法总是失败(返回false)。

    void popup_MouseEnter(object sender, MouseEventArgs e)
    {
        e.Handled = true;
        Popup popup = sender as Popup;
        bool success = popup.CaptureMouse();
    }

当弹出窗口打开时,还有其他方法可以防止在主应用程序窗口中触发鼠标事件吗?

1 个答案:

答案 0 :(得分:-2)

轻松!而不是使用控件的 MouseDoubleClick 事件

private void myControl_MouseDoubleClick(System.Object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    MessageBox.Show("MouseDoubleClick on control");

}

使用 PreviewMouseDoubleClick 事件。

private void myControl_PreviewMouseDoubleClick(System.Object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    MessageBox.Show("PreviewMouseDoubleClick on control");

}

现在,双击您的控件也不会调用父级的DoubleClick事件。