2010-06-09 70 views
3

我有一些图片在网格中,然后当我点击一个按钮,一个“打开文件对话框”来了。(当然,在图像上)鼠标左键向上事件,并打开文件对话框

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

图像附有LeftButtonUp事件。问题是,如果我通过双击选择文件,打开的文件对话框关闭(这很好),但除此之外,点击文件后面的图像正在接收一个不太好的LeftButtonUp消息。

我使用WPF/C#/ VS2010

+0

你能分享你的布局吗?你确定你的图片没有被点击吗? – Amsakanna 2010-06-09 11:40:38

+0

我也有同样的问题。我会考虑这个微软通用对话框的错误。在显示对话框之前,我使用 - =运算符从事件链中删除了事件处理函数,然后在关闭对话框之后,我添加了事件处理函数,并在我将它们添加回来后立即自动触发它们......无论如何,我无法摆脱它。 – LazNiko 2011-08-24 17:42:47

回答

4

简单的方法来解决它,就是当你需要一个处理程序,按钮式的事件,添加一个按钮,按下事件,在它做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); 
    // ... 
}