2017-03-28 1 views
0

J'ai un TextBox et je veux enregistrer le contenu, lorsque l'utilisateur quitte la TextBox. J'ai prévu d'utiliser PreviewLostKeyboardFocus, mais cela ne fonctionne pas comme prévu.WPF: Ce comportement est-il prévu? AperçuLostKeyboardFocus et LostKeyboardFocus

<TextBox PreviewLostKeyboardFocus="textBox2_PreviewLostKeyboardFocus" 
     LostKeyboardFocus="textBox2_LostKeyboardFocus" /> 

Lorsque je clique sur un autre contrôle à l'intérieur de la même application, j'obtiens d'abord l'événement PreviewLostKeyboardFocus puis l'événement LostKeyboardFocus. Mais lorsque j'active une autre application, l'événement PreviewLostKeyboardFocus ne se produit tout simplement pas. Je reçois seulement LostKeyboardFocus.

Répondre

0

Ceci est le comportement attendu.

L'événement PreviewLostKeyboardFocus n'est pas déclenché lorsque vous passez à une autre application.

Le but principal de gérer l'événement en premier lieu est d'empêcher la mise au point du clavier de changer: https://msdn.microsoft.com/en-us/library/system.windows.input.keyboard.previewlostkeyboardfocus(v=vs.110).aspx

Et si l'événement a été soulevée lorsque vous passez à une autre application, vous seriez en mesure d'empêcher le clavier concentrez-vous sur la modification de la gestion de cet événement et définissez la propriété Handled du KeyboardFocusChangedEventArgs sur true, ce qui empêcherait l'utilisateur de pouvoir faire la mise au point de tout autre élément à l'écran lors de l'exécution de votre application.

+0

Pouvez-vous me dire, où dans la documentation il est indiqué qu'il ne se lève pas lors du passage à une autre application? --- Cependant, existe-t-il un mécanisme ou un événement que je peux utiliser pour savoir si je perds le focus, avant qu'une autre application obtienne l'attention. C'est parce que je veux enregistrer le contenu de la zone de texte dans un fichier, afin qu'un autre éditeur de texte puisse détecter les changements. Par exemple Notepad ++ ne vérifie que les fichiers mis à jour, quand il reçoit le focus, et qu'il est trop tard pour que je puisse le sauvegarder. –

+0

Veuillez ne pas poser de questions supplémentaires dans les commentaires. Posez une autre question si vous avez un autre problème. Mais qu'en est-il de la gestion de l'événement LostKeyboardFocus? Ou vous pouvez gérer l'événement Deactivated de la fenêtre ou l'application: https://msdn.microsoft.com/en-us/library/system.windows.application.deactivated.aspx. – mm8

+0

S'il vous plaît n'oubliez pas de voter vers le haut des réponses utiles :) http://stackoverflow.com/help/privileges/vote-up – mm8