【问题标题】:Mouse left button up event and openfiledialog鼠标左键向上事件和openfiledialog
【发布时间】:2011-03-01 14:34:06
【问题描述】:

我在网格中只有几张图片,然后当我点击一个按钮时,会出现一个“打开文件对话框”。(当然,在图片上)

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

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

我正在使用 wpf/c#/vs2010

【问题讨论】:

  • 你能分享你的布局吗?你确定你的图片没有被点击吗?
  • 我也有同样的问题。我认为这是微软常用对话框的错误。在显示对话框之前,我使用 -= 运算符从事件链中删除了事件处理函数,然后在对话框关闭后,我重新添加了事件处理函数,并且在我重新添加它们之后,它们会自动触发...我就是无法摆脱它。

标签: c# wpf mouse openfiledialog


【解决方案1】:

绕过它的简单方法是,每当您需要一个按钮向上事件的处理程序时,添加一个按钮向下事件,在其中执行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);
    // ...
}

【讨论】:

    猜你喜欢
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多