Entwickler-Ecke
WinForms - Variable Klassenübergreifend benutzen
faux - Sa 26.11.05 11:28
Titel: Variable Klassenübergreifend benutzen
Hallo!
Ich programmiere grad ein Programm, welches eine MySQL-Verbindung benötig.
Ich habe zz zwei Forms. Eine heißt MainForm und die andere ConnWindow. MainForm ist klar, denke ich, und in ConnWindow werden die Verbindungsdaten eingegeben.
Ich habe die MySql.Data.MySqlClient.MySqlConnection in der MainForm-Klasse (logisch).
Wie kann ich jetzt eine Verbindung über ConnWindow aufbauen und deren MySQL-Connection in der Variable, welche in der MainForm liegt, speichern?
Ich brauch keinen Code, sondern will nur vom Prinzip wissen, wo ich eine Instanz von ConnWindow erstelle und wie ich dann auf die Variable in MainForm zugreife.
Grüße
Faux
Christian S. - So 27.11.05 03:32
Hallo!
Ich würde den Konstruktor des ConnWindow so ändern, dass er eine MySQLConnection übergeben bekommt, mit der das ConnWindow dann arbeiten kann. Die Mainform übergibt dann beim Erzeugen des ConnWindow ihre Connection an den Konstruktor.
Grüße
Christian
faux - So 27.11.05 10:47
Das ist eine gute Idee!
Ich denke mal, ich werd das so probieren.
Zwei Fragen hätte ich aber noch.
Ich muss ja eine Variable von Typ ConnWindow deklarieren - klar - auf die ich dann die Instanz leite.
1. Dies muss eine globale Variable sein, oder?
2. Wie weiß ich, wenn ConnWindow die Connection zurück gibt? Soll ich da ein Event auf die in Frage 1 beschriebene Variable setzen, das dann von ConnWindow ausgelöst wird, oder soll ich eine Schleife machen, die solange läuft, bis ConnWindow die Connection zurück gibt?
Danke für die Antwort!
Grüße
Faux
Robert_G - So 27.11.05 13:28
Zitat: |
Das ist eine gute Idee! |
Eigentlich war das die naheliegendste Lösung. Aber ween man bedenkt wo du herkommst... ;)
Zitat: |
Zwei Fragen hätte ich aber noch.
Ich muss ja eine Variable von Typ ConnWindow deklarieren - klar - auf die ich dann die Instanz leite.
1. Dies muss eine globale Variable sein, oder?
2. Wie weiß ich, wenn ConnWindow die Connection zurück gibt? Soll ich da ein Event auf die in Frage 1 beschriebene Variable setzen, das dann von ConnWindow ausgelöst wird, oder soll ich eine Schleife machen, die solange läuft, bis ConnWindow die Connection zurück gibt?
|
Nein und
Nein(!)
Das ist doch eine Paradeaufgabe für einen modalen Dialog. ;)
C#-Quelltext
1: 2: 3: 4: 5:
| using (ConnectionDialog dialog = new ConnectionDialog(deineConnection)) { if (dialog.ShowDialog() == DialogResult.Ok) deineConnection.Open(); } |
Wichtig ist natürlich noch, dass du den parameterlosen Konstruktor behälst, da dir sonst der Desiner ins Gesicht springt.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| public ConnectionDialog() { InitializeComponent(); }
public ConnectionDialog(IDbConnection connection) : this(){ this.connection = connection; } |
faux - So 27.11.05 13:55
Robert_G hat folgendes geschrieben: |
Eigentlich war das die naheliegendste Lösung. Aber ween man bedenkt wo du herkommst... ;) |
Was soll denn das wieder heißen? :twisted:
Ja, das mit der globalen Variable habe ich auf "mit Event" bezogen. Also einfach ignorieren... :oops:
OK, werd das mit dem Dialog lösen.
Das wäre eigentlich die naheliegenste Lösung gewesen. :roll:
Grüße
Faux
NACHTRAG:
SO, eine dumme Frage jagt die andere. :mrgreen:
Wie mache ich denn die ShowDialog() - Function, so dass der aufrufende solange wartet? :oops:
Wollte mir eigentlich mittels Lutz Roeders Reflector ansehen, wie Microsoft das beim SaveDialog gelöst hat, aber selbst dafür bin ich anscheinden zu dum. :cry:
Robert_G - So 27.11.05 14:48
faux hat folgendes geschrieben: |
Robert_G hat folgendes geschrieben: | Eigentlich war das die naheliegendste Lösung. Aber ween man bedenkt wo du herkommst... ;) | Was soll denn das wieder heißen? :twisted: |
Das sollte heißen, dass man nachsichtig mit dir sein muss. Schließlich hat der durchschnittl. Delphianer die Angewohnheit hat alles mit globalen Variablen, dyn. Arrays oder anderen Dingen zu erschlagen, für die er nicht viel nachdenken muss.
Nichts davon funktioniert wirklich gut in .Net-Sprachen. :mrgreen:
Zitat: |
Wie mache ich denn die ShowDialog() - Function, so dass der aufrufende solange wartet? |
Gar nicht, ist bereits eine Methode von Form.
Christian S. - So 27.11.05 14:51
Robert_G hat folgendes geschrieben: |
Das sollte heißen, dass man nachsichtig mit dir sein muss. Schließlich hat der durchschnittl. Delphianer die Angewohnheit hat alles mit globalen Variablen, dyn. Arrays oder anderen Dingen zu erschlagen, für die er nicht viel nachdenken muss. |
Manchmal habe ich bei Dir die Befürchtung, Du hast diese dummen Vorurteile wirklich und das ist nicht nur Spaß. :gruebel:
faux - So 27.11.05 15:14
Robert_G hat folgendes geschrieben: |
faux hat folgendes geschrieben: | Robert_G hat folgendes geschrieben: | Eigentlich war das die naheliegendste Lösung. Aber ween man bedenkt wo du herkommst... ;) | Was soll denn das wieder heißen? :twisted: |
Das sollte heißen, dass man nachsichtig mit dir sein muss. Schließlich hat der durchschnittl. Delphianer die Angewohnheit hat alles mit globalen Variablen, dyn. Arrays oder anderen Dingen zu erschlagen, für die er nicht viel nachdenken muss.
Nichts davon funktioniert wirklich gut in .Net-Sprachen. :mrgreen: |
Ist auch gut so!
Robert_G hat folgendes geschrieben: |
Zitat: | Wie mache ich denn die ShowDialog() - Function, so dass der aufrufende solange wartet? | Gar nicht, ist bereits eine Methode von Form. |
.NET ist mir zu langweilig. Da gibt es ja alles schon... :mrgreen:
Wann wird hier welcher Wert returnt? Also wie kann ich sagen, dass DialogResult.OK oder DialogResult.Cancel returnt wird?
Grüße
Faux
Robert_G - So 27.11.05 16:19
Zitat: |
Wann wird hier welcher Wert returnt? Also wie kann ich sagen, dass DialogResult.OK oder DialogResult.Cancel returnt wird? |
Du wirst wohl einen okButton und einen cancelButton auf deinem Dialog haben, oder?
Im ersten setzt du DialogResult af Ok, im zweiten auf Cancel.
btw: @Christian
Der erste Satz war als Stichelei gedacht,im 2. hätte ich vllt "der durchschnittl. Delphianer" gegen "die meisten, die mir untergekommen sind" ersetzen sollen. Ändert aber nicht viel daran, und ja das ist meine Meinung.
Das ist das Problem mit einer Sprache/IDE, die als VB-Killer konzipiert wurde: Man hat einfach viele Fast-VB'ler...
faux - So 27.11.05 16:49
Robert_G hat folgendes geschrieben: |
Zitat: | Wann wird hier welcher Wert returnt? Also wie kann ich sagen, dass DialogResult.OK oder DialogResult.Cancel returnt wird? | Du wirst wohl einen okButton und einen cancelButton auf deinem Dialog haben, oder?
Im ersten setzt du DialogResult af Ok, im zweiten auf Cancel. |
No comment. :mrgreen:
Danke.
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!