マウス左ボタンアップイベントとファイルダイアログを開く
-
25-09-2019 - |
質問
グリッド内にいくつかの画像があり、ボタンをクリックすると、「ファイルを開くダイアログ」が表示されます(もちろん、画像の上に)。
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);
// ...
}
所属していません StackOverflow