4


0

私のメインアプリケーションウィンドウにはコントロールがあり、それぞれがポップアップを開いてユーザーにさらにコントロールを表示します。

メインアプリケーションウィンドウの他のコントロールには、ダブルクリックイベントハンドラがあります。 私の問題は、ユーザーがポップアップをダブルクリックすると、ポップアップの背後にあるコントロールがmousedoubleclickイベントを受け取ることです。

ポップアップの親にmousedoubleclickイベントハンドラを追加してイベントを処理しようとしましたが、それでもメインアプリケーションウィンドウに到達します。

private void ParentControl_MouseDoubleClick(オブジェクトセンダ、MouseButtonEventArgs e){e.Handled = true; }

ポップアップのMouseEnterイベントハンドラでPopup.CaptureMouse()を呼び出すことも試みましたが、このメソッドは常に失敗します(falseを返します)。

void popup_MouseEnter(オブジェクトセンダ、MouseEventArgs e){e.Handled = true;ポップアップpopup = Popupとしての送信者。 bool success = popup.CaptureMouse(); }

ポップアップが開いているときにメインアプリケーションウィンドウでマウスイベントが発生しないようにする他の方法はありますか?

1 Answer


-2


簡単です! コントロールの* MouseDoubleClick *イベントを使用する代わりに

private void myControl_MouseDoubleClick(System.Object sender、System.Windows.Input.MouseButtonEventArgs e){MessageBox.Show( "MouseDoubleClick on control");

}
  • PreviewMouseDoubleClick *イベントを使用してください。

myControl_PreviewMouseDoubleClick(System.Object sender、System.Windows.Input.MouseButtonEventArgs e){MessageBox.Show( "PreviewMouseDoubleClick on control");

}

コントロールをダブルクリックしても、親のDoubleClickイベントは呼び出されません。