2010-09-21 6 views
1

Im écrivant une nouvelle application basée sur le plugin. Cela charge les assemblys dans leurs propres domaines d'applications et affiche les formulaires principaux spécifiés dans chaque application via Application.Run (pluginForm). J'ai défini le formulaire principal dans l'application loader en tant que parent de chaque pluginForm avant d'appeler Application.Run (pluginForm) dans le domaine de l'application. Ainsi, lorsque le pluginForm montre qu'il est toujours affiché devant le mainForm de l'application loader.Le formulaire enfant perd son focus sur le premier clic vers le formulaire parent. Comment régler ceci?

Mon problème est lorsqu'un utilisateur clique pour la première fois sur le pluginForm (formulaire enfant), il perd le focus et le mainForm (formulaire de l'application loader) obtient le focus. (Cependant, le pluginForm reste à l'avant) L'utilisateur finit par devoir cliquer deux fois pour que le pluginForm se concentre pour la première fois.

C'est assez ennuyeux. Comment puis-je réparer cela?

+0

http://www.elearnenglishlanguage.com/difficulties/looselose.html –

Répondre

2

Vous devez afficher les formulaires enfants sous forme de boîtes de dialogue modales sur le thread d'interface utilisateur du parent en appelant ShowDialog().

+0

Merci. Oui, j'ai essayé ça. Mais cela me limitera à une seule forme à un moment donné. J'ai besoin de plusieurs de ces formes pour être debout. J'ai également essayé pluginForm.Show() dans un thread séparé autre que le thread d'interface utilisateur parent. Cela élimine le bug de mise au point mais je ne peux pas définir pluginForm.Owner à mainForm car il est dans un thread séparé. D'autres idées? – Harindaka

-1

Lorsque vous appelez les enfants utilisent les formulaires

childForm.ShowDialog(parentForm); 

ou l'équivalent

childForm.ShowDialog(this); 
+0

Merci. Le fait est im faire cela à partir d'un autre thread que le thread UI principal. :( – Harindaka

Questions connexes