Autor Beitrag
erfahrener Neuling
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: Di 25.10.16 11:08 
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.
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 25.10.16 11:48 
Jeder Button hat selbst die Eigenschaft DialogResult, 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.

Für diesen Beitrag haben gedankt: erfahrener Neuling
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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.

Für diesen Beitrag haben gedankt: erfahrener Neuling
erfahrener Neuling Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: 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!