Refresh des StatusStrip

MasterDS

Erfahrenes Mitglied
Sprache: VB.NET 2005

Hi!

Ich habe ein kleines Problem. Ich versuche aus einer selbst erstellten Klasse ein StatusStrip auf einer Form zu aktualisieren. Es handelt sich hierbei um den Fortschritt einer Schleife. Im Schleifenkörper wird eine Variable erhöht und diese soll dem Anwender im StatusStrip ausgegeben werden. Allerdings wird dort garnichts angezeigt, da die Anwendung für diesen Zeitraum ausgelastet ist.

Allerdings habe ich nach jeder Änderung ein StatusStrip.Refresh() UND sogar ein Form.Refresh UND noch ein Application.DoEvents() eingebaut. "Normalerweise" Müsste ja ein StatusStrip.Refresh() genügen, denn das Formular wird korrekt angezeigt. Auch Focus auf die Form hat nichts gebracht...

Jemand noch eine Idee?

MfG

Dennis
 
Bitte poste die Frage ins .NET-Unterforum, hier kommen nur Fragen bis VB6 rein. VB.NET hat eine etwas andere Syntax, daher haben die .NET-Sprachen ein eigenes Unterforum.


Der Doc!
 
Hi und willkommen im Forum

@topic
Ich würde dir empfehlen, die Schleife in einem extra Thread (passende Themen hier im Forum und in der MSDN vorhanden) laufen zu lassen. Per Invoke/Delegate änderst du dann das entsprechende Control auf der Form.
Das hat den Vorteil, dass die Form nicht hängen bleibt, während die Schleife läuft.
 
Also erstmal vielen Dank für das verschieben des Posts und den netten Willkommensgruß.

Ich werde gleich mal versuchen die Schleife in einen extra Thread zu packen, mal schauen ob ich das hin bekomme (habs mit extra Threads noch nie gemacht). Schau mich dann mal hier im Forum um, ob ich daraus schlau werde!

Vielen Dank erstmal.

Gruß

Dennis
 
Hi nochmal!

Also, ich hab jetzt nen extra Thread über Invoke und Delegate gemacht. Allerdings aktualisiert sich mein StatusLabel immernoch nicht. Vielleicht mach ich aber auch nen Denkfehler, den ihr mir bestimmt schnell aufklären könnt.

Ich habe die o.g. Schleife in einer Funktion die mir ein Datatable zurückgibt. Als ich den Delegat darauf setzen wollte, ging dies nicht wegen der unterschiedlichen Signaturen (Funktion nimmt FileInfo an und gibt Datatable zurück). Kann ein Delegat nicht auf eine Funktion zeigen?

Um das zu lösen lasse ich den Delegaten auf eine extra Sub zeigen, die wiederum die Funktion aufruft und das Datatable annimmt. Vielleicht erreiche ich deswegen nicht mein Ziel?

P.S. Multi-Threading Teil 1 schön und gut.... Aber gibts auch den 2. Teil?

Danke schon mal!

Dennis
 
Zuletzt bearbeitet:
Hi

Also ein Delegate ist ein Zeiger auf eine Funktion, die den Rückgabetyp void haben muss (in VB eine Sub).
Die Funktion, auf die das Delagate zeigt, muss der selben Signatur entsprechen wie das Delagate, sprich gleicher Rückgabetyp und gleiche Parameter.

Um jetzt zu sagen, wo der Fehler liegt, wären aber ein paar Zeilen Code ganz praktisch ;)
Hast du schon mal debugged und überprüft, ob die entsprechende Funktion auch aufgerufen wird?
 
Hi!

Ich muss mich entschuldigen. Habe das Problem entdeckt. Aus der Klasse kann ich nicht auf das Formular zugreifen. Es gibt zwar keinen Fehler wenn ich sage

Formular.StatusStrip.text=" BLABLA",
aber funktionieren tut es auch nicht.

Wie gesagt, ich fange gerade erst so richtig mit der Programmierung an. Wie kann ich aus der Klasse auf die Objekte von Formularen zugreifen?

Aber danke trotzdem für die Info, dass ein Delegate nicht auf eine Funktion zeigen kann.
 

Neue Beiträge

Zurück