Je deux formulaires, Form1, et un UserControl qui héberge Form2. Dans ce UserControl sur Form1, j'appelle Form2.Show();
. J'ai également essayé Form2.Show(this);
. De toute façon, l'accent n'est pas donné au formulaire. Je dois cliquer une fois dans le nouveau formulaire pour le mettre en évidence, puis je peux cliquer sur les éléments de ce formulaire. Je pensais que le contrôle revenait à mon contrôle/formulaire principal, et que le focus se perdait. Donc j'attends que Form2 soit fermé via:Afficher un formulaire via Form.Show n'a pas de focus?
while (form2.Visible == true)
{
System.Threading.Thread.Sleep(100);
Application.DoEvents();
}
Cela semble fonctionner. Cependant, après avoir fermé le formulaire, l'inverse est vrai. Form1 n'est pas activé (même si j'appelle this.Focus()
) jusqu'à ce que je clique une fois dans la fenêtre principale du formulaire.
Toutes les idées pour gérer cela correctement. Je veux montrer une forme enfant (modeless) et immédiatement pouvoir cliquer dessus, et quand ce formulaire est fermé, être immédiatement capable de revenir sur le formulaire parent.
Un contrôle utilisateur qui * héberge * un formulaire? Est-ce juste en le créant et en appelant Show() ou agit-il réellement en tant que parent pour le formulaire avec la propriété TopLevel du formulaire définie sur false? Afficher le code de contrôle de l'utilisateur. –
Il agit juste comme un parent. C'est un ComboBox où je "laisse tomber" mon propre ListView plutôt que le dialogue standard. Ce ListView est hébergé dans un formulaire (je ne pouvais pas trouver un moyen d'afficher directement le ListView.). Je vais regarder dans l'ajout du UserControl. – esac