Imaginez le code ci-dessous. Seule la première fenêtre apparaît en haut, toutes les fenêtres suivantes ne peuvent pas et ne peuvent pas être focalisées par programme pour une raison quelconque (elles apparaissent en arrière-plan). Une idée de comment contourner cela? BTW, les méthodes/propriétés statiques ne sont pas autorisées et il n'y a aucune propriété globale.Pourquoi seule la première fenêtre affichée peut-elle être mise au point?
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Thread t1 = new Thread(CreateForm);
t1.SetApartmentState(ApartmentState.STA);
t1.Start();
t1.Join();
t1 = new Thread(CreateForm);
t1.SetApartmentState(ApartmentState.STA);
t1.Start();
t1.Join();
}
private static void CreateForm()
{
using (Form f = new Form())
{
System.Windows.Forms.Timer t = new System.Windows.Forms.Timer
{
Enabled = true,
Interval = 2000
};
t.Tick += (s, e) => { f.Close(); t.Enabled = false; };
f.TopMost = true;
Application.Run(f);
}
}
Comment pouvez-vous avoir deux éléments en tant que «TopMost»? Imaginez une file d'attente au guichet. Si vous êtes la première personne à faire la queue, personne d'autre ne peut prendre la première place. Si quelqu'un prend la première place, vous perdez automatiquement votre première place. Pourriez-vous nous dire ce que vous essayez d'accomplir? – SolutionYogi
En raison de Join() les fenêtres sont créées et affichées dans la séquence, pas en même temps. –