Laden...

Formular wird nicht vollständig gezeichnet

Erstellt von Marcel vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.098 Views
M
Marcel Themenstarter:in
210 Beiträge seit 2005
vor 6 Jahren
Formular wird nicht vollständig gezeichnet

Hallo.

Ich habe ein Formular und in diesem wird per Click Folgendes zum Test ausgelöst:


private void MnuFileSrcFolder_Click(object sender, EventArgs e)
        {            
                Form fw = new Form() { Width = 50, Height = 300 };
                System.Windows.Forms.Label l = new System.Windows.Forms.Label();
                l.Text = "Hallo Welt";
                fw.Controls.Add(l);
                fw.Show();
                Thread.Sleep(3000);
                fw.Close();
         }

Ich steh grad echt auf dem Schlauch. Aber das Formular wird nicht vollständig gezeichnet. Es erscheint der Rahmen mit dem X oben rechts und die graue Fläche. Beim Label allerdings wird lediglich der hintergrund angezeigt und nicht der Text.

ShowDialog() würde alles anzeigen aber ist modular.

Ich brauch grad mal einen Schups in die richtige Richtung 😃

D
985 Beiträge seit 2014
vor 6 Jahren

Du blockierst mit Thread.Sleep den GUI-Thread (der wo eigentlich zeichnen würde wenn man ihn lässt).

So geht es ohne Blockieren


private async void MnuFileSrcFolder_Click(object sender, EventArgs e)
        {
                Form fw = new Form() { Width = 50, Height = 300 };
                System.Windows.Forms.Label l = new System.Windows.Forms.Label();
                l.Text = "Hallo Welt";
                fw.Controls.Add(l);
                fw.Show();
                await Task.Delay( 3000 );
                fw.Close();
         }

2.078 Beiträge seit 2012
vor 6 Jahren

Gib der Methode das async-Schlüsselwort.
Das sagt aus, dass die Methode asynchron laufen darf.
Dann darfst Du auch das await-Schlüsselwort nutzen.
Das brauchst DU um asynchron warten zu können, sprich: await Task.Delay(3000)

PS: Und Sir Rufo war schneller

M
Marcel Themenstarter:in
210 Beiträge seit 2005
vor 6 Jahren

Funktioniert. Danke!