Entwickler-Ecke

WinForms - Verhalten von DialogResult


erfahrener Neuling - Di 25.10.16 11:08
Titel: Verhalten von DialogResult
Hallo,

gerade hänge ich an einem (sonst funktionierenden) Problem fest, wobei sich mir das Verhalten dabei nicht erschließt.
Sachverhalt:
Ich habe 2 Buttons. Wird Button a geklickt, wird ein Click-Event ausgelöst und das Form-DialogResult auf Ok gesetzt.
Wird Button b geklickt, wird ein anderes Click-Event ausgelöst. In diesem ist das DialogResult dann unerwarteter Weise None, obwohl ich das nirgendwo sonst zuweise und es eigentlich Ok sein müsste.

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
private void buttonA_Click(object sender, EventArgs e)
{
     this.DialogResult = DialogResult.OK;
}

private void buttonB_Click(object sender, EventArgs e)
{
     MessageBox.Show(this.DialogResult.ToString()); // gibt None aus
}

Da das normalerweise Standardzeug ist, hat's mich doch ganz schön verwundert. Hat sich irgendwas an Form.DialogResult geändert? Vielleicht mit neuem Update?


Th69 - Di 25.10.16 11:48

Jeder Button hat selbst die Eigenschaft DialogResult [https://msdn.microsoft.com/de-de/library/system.windows.forms.button.dialogresult%28v=vs.110%29.aspx], so daß bei einem Klick auf diesen Button automatisch der DialogResult der Form gesetzt wird.

Dein eigener EventHandler für buttonA ist also unnötig, wenn du einfach die Eigenschaft DialogResult im Designer setzt.


Ralf Jansen - Di 25.10.16 12:03

Button.DialogResult setzen schließt aber die Form. Er will ja scheinbar DialogResult weiterhin auf der existierenden Form auswerten. Wir könne uns eher fragen was das soll. Etwas das DialogResult heißt auf diesem Dialog weiterhin auswerten zu wollen?

Edit : Vor dem Ausführen von Button.Click wird vom Button Form.DialogResult mit Button.DialogResult überschrieben.


erfahrener Neuling - Di 25.10.16 12:14

Zitat:
Button.DialogResult setzen schließt aber die Form

Ok, das wusst ich noch nicht. Ich dachte, man kann es wie ein öffentliches Enum setzen und dann jederzeit wie eine Variable auswerten.

Dass das setzen die Form autom. schließt, ist mir davor gar nicht aufgefallen. Wenn ich's mir recht überlege, war dies auch nicht mein Standard-Vorgehen, weshalb ich mich dann doch wunderte.

Vielen Dank dafür!