Autor |
Beitrag |
faux
Beiträge: 36
Win XP Pro
C# (VS 2005), Delphi 7
|
Verfasst: Sa 26.11.05 11:28
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.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
faux
Beiträge: 36
Win XP Pro
C# (VS 2005), Delphi 7
|
Verfasst: 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
Beiträge: 416
Delphi32 (D2005 PE); Chrome/C# (VS2003 E/A, VS2005)
|
Verfasst: 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
Beiträge: 36
Win XP Pro
C# (VS 2005), Delphi 7
|
Verfasst: 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?
Ja, das mit der globalen Variable habe ich auf "mit Event" bezogen. Also einfach ignorieren...
OK, werd das mit dem Dialog lösen. Das wäre eigentlich die naheliegenste Lösung gewesen.
Grüße
Faux
NACHTRAG:
SO, eine dumme Frage jagt die andere.
Wie mache ich denn die ShowDialog() - Function, so dass der aufrufende solange wartet?
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.
|
|
Robert_G
Beiträge: 416
Delphi32 (D2005 PE); Chrome/C# (VS2003 E/A, VS2005)
|
Verfasst: So 27.11.05 14:48
|
|
Christian S.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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ß.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
faux
Beiträge: 36
Win XP Pro
C# (VS 2005), Delphi 7
|
Verfasst: So 27.11.05 15:14
|
|
Robert_G
Beiträge: 416
Delphi32 (D2005 PE); Chrome/C# (VS2003 E/A, VS2005)
|
Verfasst: 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
Beiträge: 36
Win XP Pro
C# (VS 2005), Delphi 7
|
Verfasst: 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.
Danke.
|
|