質問

グリッド内にいくつかの画像があり、ボタンをクリックすると、「ファイルを開くダイアログ」が表示されます(もちろん、画像の上に)。

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

画像には LeftButtonUp イベントがアタッチされています。問題は、ファイルをダブルクリックして選択すると、ファイルを開くダイアログが閉じることですが(これは良いことですが)、それに加えて、クリックしたファイルの背後にある画像がLeftButtonUpメッセージを受信して​​いることですが、これはまったく良くありません。

私はwpf/c#/vs2010を使用しています

役に立ちましたか?

解決

これを回避する簡単な方法は、あなたがボタンアップイベントにハンドラを必要なとき、イベントダウンボタン-追加し、それに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);
    // ...
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top