Entwickler-Ecke

WinForms - DialogResult in letzter Methode fest legen


Palladin007 - Mo 08.07.13 10:49
Titel: DialogResult in letzter Methode fest legen
Moin,

ich habe einen Button, der beim Klick entweder die Form schließen (wenn das eingegebene Passwort korrekt ist), oder einen Fehler anzeigen soll.

Hier das Click-Event:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
        private void OkBtn_Click(object sender, EventArgs e)
        {
            if (onValidatePasswordEvent(this.PasswordBox.Text.Trim()))
            {
                this.OkBtn.DialogResult = DialogResult.OK;
                this.Close();
            }
            else
            {
                this.OkBtn.DialogResult = DialogResult.None;
                // TODO: Fehler anzeigen
            }
        }


Ich hab in einer anderen Form das so geregelt, dass der DialogResult noch vor dem Klick des OK-Buttons fest gelegt wird, aber diese Möglichkeit habe ich hier nicht.

Wenn ich diese Methode verwende, kommt als DialogResult jedoch immer Cancle, scheinbar ist das so eine Begleiterscheinung von Close().

Hat jemand eine Idee, wie ich noch in den Click-Event fest legen kann, ob DialogResult OK ist und die Form sich damit schließt, oder None und gar nichts passiert?


Gruß


Christian S. - Mo 08.07.13 11:13

Hast Du mal versucht, das DialogResult der Form selber zu setzen?

http://msdn.microsoft.com/de-de/library/system.windows.forms.form.dialogresult(v=vs.80).aspx


Palladin007 - Mo 08.07.13 13:05

Das wäre aber nicht das, was ich brauche, denn wenn ich DialogResult schon vorher fest lege, dann muss ich es trotzdem ändern.

Der OK-Button kann zwei verschiedene DialogResult-Varianten haben. OK, wenn das Passwort richtig ist und None, wenn es falsch ist.
Ist das Passwort richtig, dann beendet DialogResult.OK die Form und ich kann es verarbeiten. Ist das Passwort falsch, wird das angezeigt und die Form bleibt offen, bis das Passwort korrekt eingegeben wurde, oder die Form durch einen Cancle-Button mit entsprechendem DialogResult beendet wird.

Oder hab ich dich falsch verstanden?


Edit:
Glaub hab dich falsch verstanden. DialogResult von der Form selber habe ich noch nicht gesetzt, ich probiere es gleich mal aus.


Palladin007 - Mo 08.07.13 13:21

Ich antworte mal extra:

Christian, danke für die Hilfe, genau das hab ich gesucht :D

Damit funktioniert es und ich kann auch gleich den WorkAround aus der anderen Form richtig stellen. ^^


Christian S. - Mo 08.07.13 13:23

Prima, dass es geklappt hat :)