2010-12-03 67 views
1

J'ai un problème étrange. J'ai une application C# .NET 2.0 et un menu contextuel. Lorsque vous faites un clic droit sur l'application, le menu contextuel s'affiche et l'un des éléments du menu est Options. Lorsque vous cliquez sur les options, j'ai un formulaire OptionsDialog qui s'affiche (en utilisant la méthode ShowDialog()). Le problème est, sur Windows XP, l'accent ne cesse de disparaître. Si je clique sur le formulaire d'options, ses gains se concentrent pendant une seconde, mais le perd à nouveau! J'ai tout essayé. Sur l'événement Deactivate, j'appelle this.Focus() mais cela ne semble pas faire de différence. J'ai également essayé de faire la fenêtre la plus haute, mais ne fonctionne toujours pas.La boîte de dialogue perd le focus sous Windows XP

Une autre chose bizarre est que ce problème semble se produire uniquement sur XP. Je l'ai essayé avec Vista et Windows 7 et ça marche parfaitement. XP fait quelque chose de bizarre. Quelqu'un at-il des idées sur la façon de résoudre ce problème?

+0

Avez-vous essayé sur un autre ordinateur XP? – Stu

+0

Oui. J'utilise VMWare pour tester mes applications. Je dois séparer 2 images XP que j'utilise pour tester et les deux font le même comportement bizarre. – Icemanind

+0

Avez-vous essayé d'utiliser Spy ++ pour voir les messages de Windows? Vous devriez être capable de trouver quel fil tire le focus –

Répondre

1

Une personne semble ici avoir le même problème: http://forums.devshed.com/c-programming-42/c-form-won-t-focus-on-control-535596.html

Est-ce que quelque chose comme ce qui ne va pas avec vous? Si vous avez un bouton par défaut ou un contrôle qui est la première valeur tabStop qui est également désactivé au démarrage du formulaire, cela peut être la cause du problème.

Vérifiez les contrôles désactivés sur le formulaire et assurez-vous que le bouton par défaut et les contrôles de premier tabulation sont activés. (Astuce: le bouton par défaut devrait normalement être 'Annuler' sur un formulaire modal, et il devrait toujours être activé.)

+0

La différence entre mon problème et le problème de ce type, c'est qu'il semble perdre le contrôle d'un contrôle spécifique. Mon problème est que mon formulaire ENTIER perd le contrôle – Icemanind

+0

Vous avez raison. Hmm, avez-vous essayé d'assigner le résultat de la boîte de dialogue à une variable fictive lorsque vous appelez ShowDialog pour voir si cela change quelque chose? – Alain

+0

Ouais je le fais quand même parce que j'ai besoin de sauvegarder la valeur du DialogResult – Icemanind