Quand est-ce Microsoft.Win32.OpenFileDialog.ShowDialog () return null?
-
12-09-2019 - |
Question
OpenFileDialog s ' ShowDialog renvoie une valeur booléenne nullable, mis à vrai si le utilisateur a cliqué sur OK ou faux s'il a cliqué sur Annuler. Quand faut-il revenir null
? La documentation ne dit pas.
La solution
Ceci est indiqué dans les questions liées ci-dessous, mais je vais mentionner ici que programmation WPF (Chris Sells, Ian Griffiths) dit:
ShowDialog retourne toujours vrai ou faux. ... seulement après une boîte de dialogue a été montré, mais avant qu'il ne soit fermé est DialogResult nulle.
Question similaire: A quand ShowDialog () return null
Autres conseils
Selon le réflecteur .NET , Microsoft.Win32.OpenFileDialog.ShowDialog
est mis en oeuvre par une classe de base , Microsoft.Win32.CommonDialog
. Cette mise en œuvre a une seule clause de retour:
return new bool?(this.RunDialog(activeWindow));
RunDialog
retourne un bool
, pas bool?
.
bool?
est juste un C # raccourci pour System.Nullable<bool>
. Le System.Nullable<bool>
, selon réflecteur de nouveau, définit la valeur de le nullable à son paramètre, et marque sa propriété hasValue comme vraie.
Alors ... vous ne devriez jamais obtenir un résultat de null
. Un test rapide confirme que la fermeture de la boîte de dialogue sans annuler (bouton rouge x) retourne en effet une valeur false
, pas null
.
Windows Forms version de OpenFileDialog retourne un DialogResult, qui a une plus large éventail de valeurs .
Je pense que retourne OpenFileDialog bool? être compatible avec d'autres boîtes de dialogue WPF qui peuvent réellement renvoyer un résultat nul.