5

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

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

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

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

4

1 に答える 1

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);
    // ...
}
于 2010-06-09T12:07:59.817 に答える