2009-10-29 5 views
4

Dans ma fenêtre principale de l'application, il y a des contrôles, dont chacun ouvre une fenêtre contextuelle qui présente plus de contrôles à l'utilisateur.WPF pop-up capturer les événements de souris Doubleclick

Autres contrôles dans la fenêtre principale de l'application des gestionnaires d'événements mouseDoubleClick. Mon problème est que lorsque l'utilisateur clique deux fois dans le popup, les contrôles derrière le popup reçoivent les événements mousedoubleclick.

J'ai essayé ajouté un gestionnaire d'événements MouseDoubleClick au parent de la fenêtre contextuelle et gestion de l'événement, mais il obtient encore à travers la fenêtre principale de l'application.

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

J'ai aussi essayé d'invoquer Popup.CaptureMouse() dans un gestionnaire d'événements MouseEnter dans le menu contextuel, mais la méthode est toujours un échec (retourne false). Existe-t-il d'autres moyens pour empêcher les événements de la souris de se déclencher dans la fenêtre principale de l'application lorsque la fenêtre contextuelle est ouverte?

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

+0

Jim, je ne semblais pas reproduire votre problème. Juste pour clarifier, quand vous mentionnez une fenêtre pop-up, est-ce un nouveau formulaire de fenêtre ou est-ce un contrôle dans la fenêtre principale qui change sa visibilité de Hidden/Collapse à visible. –

+0

Par popup, je veux dire la classe Popup. Voir http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.popup.aspx –

+0

à laquelle le contrôle vous définissez le gestionnaire d'événement? – thumbmunkeys

Répondre

-1

facile! Au lieu d'utiliser MouseDoubleClick événement

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

} 

utilisation du PreviewMouseDoubleClick l'événement du contrôle. Maintenant, en double-cliquant sur votre contrôle, vous n'appelez pas non plus l'événement DoubleClick du parent.

+0

Cette réponse ne répond pas à la volonté de l'OP de capturer l'événement DoubleClick sur la fenêtre contextuelle et non le contrôle en dessous. –

Questions connexes