Cuando no Microsoft.Win32.OpenFileDialog.ShowDialog () devuelve null?
-
12-09-2019 - |
Pregunta
OpenFileDialog 's ShowDialog método devuelve un valor booleano anulable, ajustado a verdadero si la usuario ha hecho clic en Aceptar o falso si se hace clic en Cancelar. ¿Cuándo volver null
? La documentación no dice.
Solución
Esto se afirma en las cuestiones vinculadas a continuación, pero voy a mencionar aquí que Programación de WPF (Chris Sells, Ian Griffiths) dice:
ShowDialog siempre devolverá verdadero o falso. ... Sólo después de un diálogo tiene Se ha demostrado, pero antes de que se haya cerrado es nulo DialogResult.
Pregunta similar: Cuándo ShowDialog () devolverá un valor nulo
Otros consejos
De acuerdo con la .NET reflector , Microsoft.Win32.OpenFileDialog.ShowDialog
se implementa por una clase base , Microsoft.Win32.CommonDialog
. Que la aplicación tiene cláusula de una sola vuelta:
return new bool?(this.RunDialog(activeWindow));
RunDialog
devuelve un bool
, no un bool?
.
bool?
es sólo un C # abreviada para System.Nullable<bool>
. El de System.Nullable<bool>
, de acuerdo con reflector otra vez, establece el valor de la anulable a su parámetro, y marca su propiedad HasValue como verdadero.
Así que ... usted no debe nunca obtener un resultado null
. Una prueba rápida confirma que cerrar el diálogo sin cancelar (botón rojo x) devuelve un valor de hecho false
, no un null
.
La versión de Windows Forms de OpenFileDialog devuelve un DialogResult, que tiene un amplio rango de valores .
Mi conjetura es que OpenFileDialog devuelve bool? para ser coherente con otros cuadros de diálogo de WPF que en realidad puede devolver un resultado nulo.