鼠标左键弹起事件和openfiledialog

phm*_*phm 5 c# wpf mouse openfiledialog

我的网格中只有很少的图像,然后当我单击按钮时,会出现“打开文件对话框”。(当然,在图像上方)

Microsoft.Win32.OpenFileDialog dlgOpenFiles = new Microsoft.Win32.OpenFileDialog(); dlgOpenFile.DoModal();

这些图像附加了 LeftButtonUp 事件。问题是,如果我通过双击选择一个文件,打开的文件对话框将关闭(这很好),但除此之外,单击的文件后面的图像会收到一条 LeftButtonUp 消息,这根本不好。

我正在使用 wpf/c#/vs2010

rep*_*pka 5

解决这个问题的简单方法是,每当您需要一个处理程序来处理按钮向上事件时,添加一个按钮向下事件,然后CaptureMouse()在其中执行。现在,在您的按钮事件中,您可以忽略所有在没有IsMouseCaptured. 并确保不要忘记ReleaseMouseCapture()

private void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    CaptureMouse();
}

private void OnMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    if (!IsMouseCaptured)
        return;
    ReleaseMouseCapture();
    var dlg = new OpenFileDialog();
    var res = dlg.ShowDialog(this);
    // ...
}
Run Code Online (Sandbox Code Playgroud)