4

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

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

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

    private void ParentControl_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        e.Handled = true;
    }

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

    void popup_MouseEnter(object sender, MouseEventArgs e)
    {
        e.Handled = true;
        Popup popup = sender as Popup;
        bool success = popup.CaptureMouse();
    }

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

4

1 に答える 1

-2

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

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

}

PreviewMouseDoubleClickイベントを使用します。

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

}

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

于 2011-07-04T12:20:39.527 に答える