Entwickler-Ecke
WinForms - Label wird nicht angezeigt
ayin - Sa 04.10.08 19:16
Titel: Label wird nicht angezeigt
Hallo!
Ich bin neu hier und hoffe ich mache nichts falsch hier:
Ich habe einen Label definiert, doch der wird nicht angezeigt während des Abalaufs des Programms. Vielleicht habt ihr eine Ahnung warum das so ist.
Hier mein Codeschnipssel: (Das Label heisst txtStatus und ich habe die entsprechenden zwei Zeilen ausdokumentiert.)
Kurioserweise wird nur das ganz unterste Label angezeigt
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| private void btnVerarbeiten_Click(object sender, EventArgs e) { this.Cursor = Cursors.WaitCursor; if (listBox1.Items.Count != 0) { progressBar.Step = 100 / listBox1.Items.Count; progressBar.Value = 0; txtStatus.Text = "Bitte warten...";
if (!Directory.Exists(this.txtZielVerzeichnis.Text)) { Directory.CreateDirectory(this.txtZielVerzeichnis.Text); }
for (int currentImage = 0; currentImage < listBox1.Items.Count; currentImage++) { string sThumbName;
listBox1.SelectedIndex = currentImage; string[] sTmpPathSplit = listBox1.Text.Split(System.IO.Path.DirectorySeparatorChar); sThumbName = "scaled-" + sTmpPathSplit[sTmpPathSplit.Length - 1]; txtStatus.Text = sThumbName; GenerateScaledImage(listBox1.Text, this.txtZielVerzeichnis.Text, sThumbName, System.Drawing.Imaging.ImageFormat.Jpeg); progressBar.Value += progressBar.Step;
}
txtStatus.Text = "Verarbeitung abgeschlossen."; progressBar.Value = 100;
} this.btnVerarbeiten.Text = "Bilder verarbeiten"; this.Cursor = Cursors.Default; } |
Vielleicht habt ihr ja eine Lösung.
mfg,
ayin
JüTho - Sa 04.10.08 19:40
Hallo und :welcome:
ein "Fehler" im Forum ist die falsche Markierung: Bitte unter Bereiche C# benutzen statt "allg. Code"; das kannst Du auch nachträglich in Deinem Beitrag ändern.
Dann ist die Problembeschreibung nicht korrekt: Das Label wird offensichtlich angezeigt, aber nicht mit dem von Dir erwarteten Text.
Der eigentliche Fehler liegt in Deinem Ablauf: In der Schleife änderst Du den Text, sorgst aber nicht für sofortige Aktualisierung. Nach der Schleife wird der Text wieder geändert; dann ist die Ereignisbearbeitung abgeschlossen, und die Anzeige wird (automatisch) aktualisiert.
Vorschlag: Die Änderung des Textes erfolgt vor Beginn der Schleife; dann wird Application.DoEvents() eingefügt. (Das ist nicht die beste, aber einfachste Lösung.)
Gruß Jürgen
ayin - Sa 04.10.08 19:46
Hallo!
Danke erstmals für deine Antwort.
| Zitat: |
| ein "Fehler" im Forum ist die falsche Markierung: |
Ich glaube ich stehe auf der Leitung und weis nicht was du damit meinst.
| Zitat: |
| Dann ist die Problembeschreibung nicht korrekt: Das Label wird offensichtlich angezeigt, aber nicht mit dem von Dir erwarteten Text. |
Hm, eigentlich wird es nur einmal angezeigt anonsten ist es leer.
| Zitat: |
Der eigentliche Fehler liegt in Deinem Ablauf: In der Schleife änderst Du den Text, sorgst aber nicht für sofortige Aktualisierung. Nach der Schleife wird der Text wieder geändert; dann ist die Ereignisbearbeitung abgeschlossen, und die Anzeige wird (automatisch) aktualisiert. |
Also wenn ich das richtig verstehe, kann es nur einmal angezeigt werden. Deswegen wird es auch vor der Schleife nicht angezeigt, weil das Ereignis noch nicht vollendet ist?
| Zitat: |
Die Änderung des Textes erfolgt vor Beginn der Schleife; dann wird Application.DoEvents() eingefügt. (Das ist nicht die beste, aber einfachste Lösung.)
|
Ich bin ja kein Profiprogrammierer sondern mache ich das bei mir nur aus Hobby, daher ist mir dieser Lösungsweg sehr recht.
Ich werde das sogleich ausprobieren und bedanke mich.
Edit: Habe meinen Code damit aktualisiert und es klappt einwandfrei. Recht herzlichen Dank.
JüTho - Sa 04.10.08 20:09
ayin hat folgendes geschrieben : |
| Zitat: | | ein "Fehler" im Forum ist die falsche Markierung: |
Ich glaube ich stehe auf der Leitung und weis nicht was du damit meinst. |
Du hast Deinen Code markiert und als "allg. Code" gekennzeichnet. Wenn Du dafür C# gewählt hättest, wäre der Code noch besser lesbar geworden.
Alles andere hast Du zumindest im wesentlichen richtig verstanden und umgesetzt. Jürgen
ayin - Sa 04.10.08 20:32
Ach, jetzt weis ich was du meinst: Das Codesegment war falsch gekennzeichnet betreffend dem Syntaxhighlighting. Habs nun ausgebessert, habs zuerst nicht gleich gefunden wo sich das versteckt.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!