Quando ha Microsoft.Win32.OpenFileDialog.ShowDialog () restituisce il null?
-
12-09-2019 - |
Domanda
OpenFileDialog s ' ShowDialog metodo restituisce un valore booleano nullable, impostato su true se il utente fa clic su OK o false se si fa clic su Cancella. Quando ha tornare null
? La documentazione non lo dice.
Soluzione
Questo è indicato nelle questioni legate al di sotto, ma io qui ricordare che Programmazione WPF (Chris Sells, Ian Griffiths) dice:
ShowDialog restituisce sempre vero o falsa. ... Solo dopo una finestra ha stato dimostrato ma prima è stata chiusa è nullo DialogResult.
interrogazione: Quando farebbe ShowDialog () ritorna null
Altri suggerimenti
Secondo il NET riflettore , Microsoft.Win32.OpenFileDialog.ShowDialog
è implementato da una classe base , Microsoft.Win32.CommonDialog
. Che l'attuazione ha clausola di un solo ritorno:
return new bool?(this.RunDialog(activeWindow));
RunDialog
restituisce un bool
, non un bool?
.
bool?
è solo una C # stenografia per System.Nullable<bool>
. di System.Nullable<bool>
, secondo riflettore nuovamente, imposta il valore di l'annullabile al suo parametro, e segna la sua proprietà hasValue come vero.
Quindi ... non si dovrebbe mai ottenere un risultato null
. Un test rapido conferma che la chiusura della finestra di dialogo senza cancellare (x tasto rosso) restituisce infatti un valore false
, non un null
.
Il Windows Forms versione di OpenFileDialog restituisce un DialogResult, che ha una ampia gamma di valori .
La mia ipotesi è che OpenFileDialog ritorna bool? essere coerenti con altre finestre WPF che in realtà possono restituire un risultato nullo.