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.

¿Fue útil?

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

Y: Por qué se DialogResult un bool anulable en WPF

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top