2011-10-06 5 views
3

J'ai vu des problèmes similaires signalés mais jamais résolus. C'est un problème majeur pour moi.Fermeture d'une fenêtre WPF lors d'un double clic sur les transferts DoubleClick sur la fenêtre principale

J'ai une application WPF qui ouvre une nouvelle fenêtre en utilisant ShowDialog(). Dans la nouvelle fenêtre, j'ai une grille de données mais il pourrait s'agir de n'importe quel type d'objet. Lorsque je gère l'événement doubleclick d'une ligne, je ferme la fenêtre. À ce stade, la fenêtre se ferme, mais le contrôle dans la fenêtre principale directement sous où j'ai cliqué reçoit les clics.

J'ai essayé de gérer PreviewMouseButtonDown et je cherchais clickcount = 2 au lieu du doubleclick mais cela avait le même effet. J'ai essayé de régler e.Handled = true et cela a également eu le même effet. J'ai essayé de mettre un propriétaire sur la fenêtre et aucun changement. J'ai essayé modal ainsi que des fenêtres régulières et aucun changement. J'ai répondu à PreviewMouseButtonDown pour un seul clic et cela a fonctionné mais j'ai absolument besoin que ce soit un double clic.

J'ai tout essayé, aidez-moi!

J'aimerais aussi une explication si possible, mais même si la solution est bonne.

Répondre

0

Ok, j'ai eu un problème similaire dans notre projet et c'est en quelque sorte lié. Nous ne l'avons jamais vraiment réparé, mais maintenant je lui ai donné d'autres pensées. Et je suppose que, parce que vous fermez la fenêtre pendant que vous manipulez l'entrée, ce traitement d'entrée est annulé, votre fenêtre est fermée, mais la demande d'entrée reste toujours (car elle n'a pas été traitée auparavant). la fenêtre arrive à le gérer. Donc, c'est bien sûr juste une photo dans l'obscurité mais cela expliquerait notre problème. Donc, pour donner une solution: Vous pouvez au lieu de fermer la fenêtre, configurer un travail Dispatcher en utilisant une priorité inférieure comme entrée et juste fermer la fenêtre là. Il devrait ressentir la même chose pour l'utilisateur mais devrait consommer le double clic.

Encore aucune garantie, cela semble juste résonable dans ma tête.

Bonne chance.

0

J'ai eu le même problème. Vous pouvez désactiver les fenêtres principales pour certains milisecounds pendant le redimensionnement de la fenêtre enfant. Je sais que c'est un code moche mais ça marche bien pour moi.

ans

0

problème est double-cliquez sur événement se déclenche le 2 événement de la souris. Si vous fermez la fenêtre dans le cadre de cette gestion d'événements, vous êtes toujours sur le point de recevoir un événement UP de la souris dans la fenêtre ouverte derrière la boîte de dialogue.

Je pense que la solution pourrait être de définir un drapeau lors de la manipulation de double-clic et à la souris, si l'indicateur est défini, fermez la fenêtre.

Questions connexes