Entwickler-Ecke
WinForms - ProgressBar aus Klasse heraus füllen
mo78 - Mo 19.03.12 15:57
Titel: ProgressBar aus Klasse heraus füllen
Hallo,
ich habe folgendes Problem
Ich habe eine Form die einen Thread startet
Die funktion die der Thread aufruft, ruft eine Methode einer klasse auf
die mehrere anweisungen abarbeitet und dabei eine Counter Variable mitzählt.
Für die Counter Variable habe ich eine getter Methode erstellt.
Wie kann ich nun das bei jedem hochzählen der CounterVariable der wert an die Progessbar übergeben wird.
Das updaten in der Form habe ich per invoke und einem delegate gemacht.
Oder ist der gesammte ansatz ein wenig zu kompliziert ???
Hier mal ein paar Relevante code aussschnitte aus der Form
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:
| private delegate void ProgressbarUpdateDelegate(int value);
private void UpdateProgressbar(int value) { if (proBarKey.InvokeRequired) { proBarKey.Invoke(new ProgressbarUpdateDelegate(UpdateProgressbar), new object[] { value }); return; }
proBarKey.Value = value; }
private void bt_Click(object sender, EventArgs e) { int rows = 6 proBarKey.Maximum = rows; proBarKey.Minimum = 0; proBarKey.Step = 1; synD = new Thread(new ThreadStart(syn)); proBarKey.Visible = true; synD.Start(); }
public void syn(){ klasse.methode(value); Thread.CurrentThread.Abort(); } |
Schonmal besten Dank für jegliche hilfe
mfg
mo
paddy14 - Mo 19.03.12 17:27
Hi,
also ich hatte auch oft das Problem das ich aus einer Klasse eine Progressbar oder eine Textbox ansprechen wollte, bisher habe ich keine andere Moeglichkeit gefunden als mir eine weitere Klasse zu schreiben.
Ich weis nicht ob das so gut ist aber der ablauf ist folgender:
Du hast deine Form wo deine ganzen Steuerelemente dagestellt werden, dort habe ich getter und setter Methoden eingebaut welche einen kontrollierten Zugriff auf die Steuerelemente haben. Ich habe mir auch noch eine weitere Klasse geschrieben welche meine Form uebergeben bekommt z.B. durch den kontruktor, dort sind dann Methoden drinn welche die getter und setter aufruft und mit Werten versorgt.
Diese behelfsklasse uebergebe ich der eigentlichen Klasse welche die Berechnungen ausfuehrt.
In deinemfalle ruft dann die Berechnungsklasse eine Methode von der Behelfklasse auf uebergibt die Werte die diese dann an die Form weiterleitet und somit dann deine Progressbar steuert.
Also ich persoenlich finde das ein bissl unschoen, aber ich weis es nicht besser und hoffe doch, das hier jemand schreibt wie man es elegant hinbekommt ;) aber so wuerde ich das erst einmal probieren.
mo78 - Di 27.03.12 11:03
Ah das ist ja schonmal ein ansatz.
Werde das mal ausprobieren.
Besten Danke erstmal ;)
mfg
mo
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!