Autor Beitrag
chazon
Hält's aus hier
Beiträge: 11



BeitragVerfasst: So 04.04.10 10:11 
Hallo Leute

Ich möchte gerne einen modalen Dialog mit OK-Button nur dann schließen
wenn alle Eingaben richtig sind .

ausblenden 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


Zuletzt bearbeitet von chazon am So 04.04.10 10:37, insgesamt 1-mal bearbeitet
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: 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:
user profile iconchazon hat folgendes geschrieben Zum zitierten Posting springen:
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.

Gruß Jürgen
chazon Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: 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

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 04.04.10 18:01 
user profile iconchazon hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: 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