Entwickler-Ecke
WinForms - Eventhandler Sender
masht - Do 22.07.10 11:28
Titel: Eventhandler Sender
Hallo,
vermutlich schimpft ihr mich gleich alle - aber könnte mir bitte jemand folgendes verständlich erklären?
und zwar hab ich ein kleines form mit 2 textboxten.
die werden mittels einem anderen form befüllt.
die Eventhandler fkt schaut so aus:´
C#-Quelltext
1: 2: 3: 4: 5: 6:
| private void try2Textbox_Input(object sender, MouseEventArgs e) { inputform form = new inputform(this, this.try2Textbox, "Wert 2"); form.Disposed += new EventHandler(this.TextBoxValueCheck); form.Show(); } |
in TextBoxValueCheck nehme ich den TextBox Text und mach kurz was damit
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| private void TextBoxValueCheck(object sender, EventArgs e) { Basistest basistest = new Basistest(this.students[currentStudent].getIdentifier(), this.students[currentStudent].getGender()); if (this.try2Textbox.Text.Length > 0) { int failedOrNor = ((basistest.checkIfTestFailed(Basistest.whatTest.sprint, Convert.ToDouble(this.try2Textbox.Text)) == true ? 2 : 1)); this.checkSidebarState(2, failedOrNor); } } |
ich möchte aber die selbe funktion nicht nochmal schreiben und umbenenen, sondern die generisch halten - sodas ich mit über die Eventargs oder das sender obj. die textbox dieser funktion übergeben.
der sender ist aber in diesem fall ja das eingabeform und nicht die textbox - und eventargs gehen ja so nicht...
hat da vielleicht jemand einen tipp?
thanx
masht
norman2306 - Do 22.07.10 11:59
Dein Problem verstehe ich nicht ganz? Kannst du das etwas besser spezifizieren?
Zu deinem Code:
Ich denke, dass ist etwas umständlich, wie du das dort machst. Ich würde InputForm als Dialog aufbauen. In dem Dialog definierst du einen public Accessor der dein Ergebnis enthält (sowie z.B. beim OpenFileDialog das Files-Feld). Dann noch einen OK und einen Cancel-Button. Der Ok-Button ist nur enabled, wenn in deinem Textfeld etwas gültiges drin steht.
Im MainWindow kannst du dann deinen Dialog öffnen und entsprechend über DialogResult auswerten:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| InputForm iform = new InputForm();
if(iform.ShowDialog() == DialogResult.OK) { text = iform.MyIFormResult; } else { } |
masht - Mo 26.07.10 08:52
danke vielmals!
das mit dem dialog ist genau das, nachdem ich gesucht habe :)
hab da wirklich viel zu umständlich gedacht.
für alle die ein ähnliches problem haben:
hab einfach zu den buttons im eingabeform (welches nun als dialog gezeigt wird) die entsprechenden dialog properties gesetzt
C#-Quelltext
1: 2:
| this.okButton.DialogResult = DialogResult.OK; this.cancelButton.DialogResult = DialogResult.Cancel; |
und das ganze dann, wie von norman2306 beschrieben als dialog abgehandelt.
jetzt können die leute meinen eigenen "numblock" für touchscreens super nützen :)
danke
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!