Laden...

Label wird erst nach der Berechung aktualisiert

Erstellt von zweimeter vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.027 Views
Z
zweimeter Themenstarter:in
2 Beiträge seit 2009
vor 15 Jahren
Label wird erst nach der Berechung aktualisiert

Hallo!

Stehe etwas am Schlauch. Ich habe eine Button, bei dem beim Drücken des Buttons ein Label sichtabr gemacht werden soll. Dieser Befehl steht auch an erster Stelle.
Danach passiert ein Datenbankzugriff etc.

Leider wird das Label erst sichtabr, nachdem alles andere abgearbeitet wurde.

Hier der Codeauszug:


private void button1_Click(object sender, EventArgs e)
        {
            label2.Visible = true;
            try
            {
....

Hab ich hier einen groben Denkfehler?

Danke!

195 Beiträge seit 2006
vor 15 Jahren

Hi,

wenn der Code nach label2.Visible =true deine GUI blockiert wird das Label erst sichtbar wenn der rest abgearbeitet ist.

Schiebe mal zwischen label2..... und dem try Block ein
Application.DoEvents();

Gruß Chris

F
10.010 Beiträge seit 2004
vor 15 Jahren

Das ist der falsche ansatz.

Langlaufende Aktionen gehören in eine extra thread.
Deshalb [FAQ] Warum blockiert mein GUI?

J
3.331 Beiträge seit 2006
vor 15 Jahren

Hallo und willkommen,

das Label wird erst dann sichtbar, wenn Windows das dazugehörige Ereignis abarbeiten will. Was vorher erledigt werden muss, wird vorher erledigt. Konkret bedeutet das: Zuerst werden die Maßnahmen im Button-Click erledigt, dann wird neu gezeichnet.

Wenn Du (z.B. wegen eines Hinweises auf die aktuellen Arbeiten) das Label sofort sehen willst, musst Du **Invalidate **und/oder **Refresh **aufrufen. (Theoretisch ist auch Application.DoEvents möglich; aber das hat schädliche Nebenwirkungen und ist deshalb möglichst zu vermeiden.)

Ansonsten ist FZelles Hinweis das sinnvollste Verfahren.

Gruß Jürgen

Z
zweimeter Themenstarter:in
2 Beiträge seit 2009
vor 15 Jahren

Danke!