C# – DialogResult eines WPF Dialogs setzen und abfragen
Heiliges Brausepulver, wieso kann ich mir nicht merken wie ich das DialogResult-Property eines WPF Dialogs setze bzw. auslese? Das wird hier jetzt ein für allemal hingeschrieben und dann hoffentlich endlich im Hirn abgespeichert.
Der Negativfall DialogResult = false
Dieser Wert kann entweder im Code per Hand gesetzt werden, wird aber auch automatisch gesetzt, wenn ein Button das Attribut IsCancel = true
erhalten hat, der Dialog via Escape-Taste, Alt-F4 oder durch einen Klick auf [x]
geschlossen wurde.
Der positivFall DialogResult = true
Dieser Fall wird erreicht, indem im Code an beliebiger Stelle explizit this.DialogResult = true
gesetzt wird. Es gibt zwar auch die Möglichkeit einen Button mittels IsDefault = true
als Standardknopf zu definieren, der dann z.B. bei einem Druck auf <Enter>
automatisch speichert und das Formular schließt, damit wird jedoch NICHT automatisch der Wert DialogResult = true
gesetzt. Das muss man explizit vornehmen.
DialogResult abfragen
Wurde der Wert gesetzt, kann man ihn in der aufrufenden Methode wie folgt abfragen:
Dialog _dialog = new Dialog(); _dialog.ShowDialog(); if (dialog.DialogResult.HasValue && dialog.DialogResult.Value) { //DialogResult = true gesetzt und Dialog dann geschlossen } else { //IsCancel Button geklickt, Dialog mit ESC geschlossen oder [x] geklickt }
Bitte liebes Hirn, merke es dir doch bitte jetzt. Immer das gleiche zu Googlen ist peinlich. Mir werden ja schon Werbeanzeigen „WPF für Dummys“ angeboten-das sollte dir zu denken geben 😉