Entwickler-Ecke
WinForms - Problem mit Static Instanzen und Textbox
m.keller - Mo 16.12.13 13:53
Titel: Problem mit Static Instanzen und Textbox
Hallo,
ich habe von einem Unternehmen eine fertige DLL Datei bekommen, für diese DLL Datei gibt es auch schon ein Fertiges Testprogramm.
nun muss ich diese Testprogramm auf unser Wünsche umschreiben.
Das Ganze Testprogramm ist mir Static Instanzen geschrieben.
Mein vorhaben ist gerade befehle und Meldungen aus diesen Instanzen in eine Textbox zu schreiben.
Da ich aber aus diesen bereichen die Textbox nicht beschreiben kann muss es doch eine andere Möglichkeit geben oder?
Hat einer eine Idee?
Vielen dank schon mal.
Ralf Jansen - Mo 16.12.13 14:01
:?: Entweder static oder Instanz. Eine Static Instanz ist irgendwie Paradox.
Static Code kann wie jeder Code Referenzen auf irgendwas benutzen also auch auf Textboxen.
Um dein Problem zu verstehen solltest du etwas deutlicher werden. Vielleicht hilft auch wenn du ein wenig Code zeigt das dein Problem verdeutlicht.
m.keller - Mo 16.12.13 14:11
oh, ich habe da mal wieder was durch einander gebracht.
denn Code will ich ungerne veröffentlichen, da es nicht um Private Programmierung geht.
hier ein kleines beispiel wie es eigentlich gedacht hatte.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| private void print_log(string text) { textbox1.Text = text; }
public static void client_apiInit() { print_log("text"); } |
Ralf Jansen - Mo 16.12.13 14:16
Mach print_log static und die statische Klasse zu der print_log verpasst du eine Referenz auf die zu benutzende Form für die Log Ausgabe. Die müßtest du halt vor dem benutzen der statischen Methoden nur einmal zuweisen bzw. du läßt den statischen Code die Form selbst erzeugen und verwalten.
m.keller - Mo 16.12.13 14:40
Print_log static ok, verstehe ich ja noch.
bei Referenz hört es fast schon auf.
print_log ist in der gleichen Klasse vorhanden, kann ich mehrere Referenzen zuweisen?
Und wie soll ich die dann zuweisen?
Tut mir leid ich bin noch nicht all so lange in dem Tehma drin.
Das ist jetzt gerade etwas neuland für mich.
Ralf Jansen - Mo 16.12.13 15:23
| Zitat: |
| print_log ist in der gleichen Klasse vorhanden, kann ich mehrere Referenzen zuweisen? |
Das macht keinen Sinn. Wenn du sagst es ist alles statisch geht die Anwendung davon aus das es sowas nur einmal gibt.
Vielleicht solltest du noch ein wenig mehr von dem rausrücken was du da hast damit wir das verstehen.
m.keller - Mo 16.12.13 16:48
ich versuche es zu erklären...
das Tool soll sich auf einem Server anmelden und Daten vergleichen und abhängig von diesen vergleichen, werden werte zurück gegeben.
Ursprung ist eine Consolenanwendung, alle von dem Testtool verwendeten Methoden sind static.
Über Console.Write() wurde das schreiben der werte und Infos im Testtool erledigt.
Dies soll nun in einer Formanwendung realisiert werden.
Um eine Übersicht zu erhalten und dem Benutzer an zu geben was das Tool gerade ausführ, soll dieses in eine Textbox geschrieben werden.
Die im Tool vorhandenen Methoden muss ich für mich nun anpassen und einige weitere Routinen erstellen.
Ralf Jansen - Mo 16.12.13 17:16
Du möchtest also einfach den Console.WriteLine Aufruf durch eine Anzeige auf einer Form ersetzen?
Dann vielleicht sowas?
Einfach alle Console.WriteLine() durch MeineLiebeClass.PrintLog() ersetzen und wenn das ansonsten immer noch eine Consolen Anwendung ist nicht vergessen vorher eine MessageQueue zu erzeugen per Application.Run.
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:
| public static class MeineLiebeClass { private static MeineLiebeForm form;
static MeineLiebeClass () { form = new MeineLiebeForm(); form.FormClosing += (sender, args) => { args.Cancel = true; form.Visible = false; }; }
static void form_FormClosed(object sender, System.Windows.Forms.FormClosedEventArgs e) { throw new NotImplementedException(); }
public static void PrintLog(string text) { if (!form.Visible) form.Visible = true;
form.textBox1.Text = text; } } |
m.keller - Di 17.12.13 08:28
Guten morgen,
also so ganz funktioniert das nicht.
Ich verstehe auch nicht warum ich jetzt dafür eine extra Klasse erstellen muss.
Jetzt meckert der debuger mich an das ich nicht auf die textbox wegen Sicherheitsebenen nicht zugreifen kann.
Entweder habe ich es immer noch nicht verständlich genug erklart (was ich vermute) oder ich stehe gerade extrem auf dem Schlauch(kommt vermutlich auch hinzu ;-))
m.keller - Di 17.12.13 10:35
So habe jetzt alle von
in
geändert.
Dan funktioniert es.
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!