Entwickler-Ecke
WinForms - modaler dialog mit OK nicht schließen
chazon - So 04.04.10 10:11
Titel: modaler dialog mit OK nicht schließen
Hallo Leute
Ich möchte gerne einen modalen Dialog mit OK-Button nur dann schließen
wenn alle Eingaben richtig sind .
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| private void button2_Click(object sender, EventArgs e) { if(radioButton1.Checked) { Close(); lb_falsches.Visible = false; } else { lb_falsches.Visible = true; } } |
Das funktioniert aber so nicht !
button2 Eigendschaft DialogResult ist OK
und Aceptbutton des Formulars ist button2
Danke und Gruß
chazon
JüTho - So 04.04.10 10:24
Hallo und :welcome:
Zunächst ist Code bitteschön als solcher zu markieren: Gehe auf deinen Beitrag, öffne ihn mit dem Schere-Button, öffne "Bereiche", wähle in der ComboBox C# aus, markiere den Code-Text, drücke den Plus-Button, kontrolliere mit der "Vorschau" (auch Einrückungen!), erst dann "Absenden". Meinst du nicht auch, dass das lesbarer ist?
Zur Sache: Ich verstehe die Abhängigkeiten nicht, weil du den Sinn von radioButton1 und lb_falsches nicht erläuterst und außerdem so etwas keine ausreichende Problembeschreibung ist:
chazon hat folgendes geschrieben : |
Das funktioniert aber so nicht ! |
Compilerfehler oder Laufzeitfehler? Mit oder ohne Exception? Welche Fehlermeldung bzw. Exception? Oder wie äußert sich das "funktioniert nicht" sonst?
Tipp: Button2 sollte im Designer auf Enabled = false gesetzt werden. Jegliche Änderung der betroffenen Controls ruft eine Prüfmethode auf; wenn alle Bedingungen erfüllt sind, wird Buttons2.Enabled auf true gesetzt.
Nebenbei: Wozu änderst du lb_falsches.Visible nach dem Close noch? Dann wird das Formular doch geschlossen und das lb_falsches ist sowieso unsichtbar. Außerdem gehören Namen wie Button2 oder TextBox27 sowieso verboten, und die ungarische Notation ist ebenfalls zu vermeiden; siehe
.NET Richtlinien für Namen [
http://msdn.microsoft.com/de-de/library/ms229002%28VS.80%29.aspx].
Gruß Jürgen
chazon - So 04.04.10 14:03
Sorry ,
Ich habe einen einfachen modalen Dialog mit einem Radiobutton, einem Button und einen
Textlabel.
Aufgerufen wird der Dialog mit mit
C#-Quelltext
1: 2: 3: 4:
| if(frmDialog.showDialog()== DialogResult.OK) { ... } |
Nun soll der Dialog erst beendet werden wenn der Radiobutton selektiert wurde
und anschließend auf den OK-Button (button2) geklickt wurde. Ansonsten soll
der Dialog nicht beendet werden und ein Fehlertext (lb_falsches) angezeigt werden.
OK , das Statement hinter Close() ist natürlich unsinn.
Leider wird der Dialog aber auf jeden Fall beendet.
Später sollen dann ausführliche Prüfungen vorgenommen werden , sd das mit dem Button.visible
nicht sinnvoll ist ( oer?)
gruß chazon
Kha - So 04.04.10 18:01
chazon hat folgendes geschrieben : |
Leider wird der Dialog aber auf jeden Fall beendet. |
Dann hast du wohl
Form.AcceptButton auf den Button oder
Button.DialogResult gesetzt, das würde ich vielleicht weglassen ;) .
Form.DialogResult musst du dann selbst im Handler auf OK setzen.
Anderer Vorschlag: Aktiviere den Button überhaupt erst, wenn ein Radio-Button ausgewählt ist. Dann kannst du wieder AcceptButton verwenden.
chazon - Mo 05.04.10 10:10
Habe es jetzt anders gelöst:
Buttoneigenschaft Dialogresult auf None
Dann habe ich eine Schittstelle DlgResult eingebaut in der ich dann
nach Schließendes Dialogs mit get einen Rückgabewert abfragen kann.
Danke für Eure Hilfe
Gruß Chazon
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!