Je rencontre un comportement étrange avec des formulaires sur une application C# 3.5. En cliquant sur un bouton, mon formulaire1 se cache, crée un nouveau formulaire2 et affiche form2. Form1 contient également la méthode d'événement déclenchée lorsque form2 se ferme. Voici le code dans Form1:C# Formulaire Problème: nouvelle forme perdant le contrôle et se cachant aléatoirement
Form2 form2;
void button1_Click(object sender, EventArgs e)
{
this.Hide();
form2 = new form2();
form2.Show();
form2.FormClosed += new FormClosedEventHandler(form2_FormClosed);
}
void form2_FormClosed(object sender, FormClosedEventArgs e)
{
form2.Dispose();
form2 = null;
this.Show();
}
Maintenant, mon problème est que, parfois, quand j'ouvre form2 (cacher form1), ou quand je ferme form2 (montrant form1), la nouvelle forme viendra à l'écran pour une clignote puis se cache. Il est toujours ouvert et je peux le cliquer dans la barre des tâches pour le montrer à nouveau, mais la fenêtre elle-même est envoyée derrière toutes les autres fenêtres ouvertes. On dirait qu'il s'ouvre mais minimise instantanément.
Ce comportement se produit de manière aléatoire. Parfois, les formulaires s'ouvrent et se cachent sans problème, mais parfois ils perdent leur focus sur une autre fenêtre. J'ai essayé d'utiliser focus(), activate(), et le plus haut, mais tous ont échoué à empêcher la soudaine dissimulation.
Est-ce que quelqu'un sait pourquoi cela se produit et comment y remédier?
Merci.
Pourquoi lancez-vous form2()? Ne devrait-il pas être form2 = new Form(); – Soviut
@Soviut - pourrait être juste une faute de frappe lors de l'écriture de la question – ChrisF
Pouvez-vous essayer avec ShowDialog()? – Stormenet