Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

When does Microsoft.Win32.OpenFileDialog.ShowDialog() return null?

OpenFileDialog's ShowDialog method returns a nullable boolean, set to true if the user clicked OK or false if he clicked Cancel. When does it return null? The documentation does not say.

like image 525
sourcenouveau Avatar asked Aug 11 '09 17:08

sourcenouveau


2 Answers

This is stated in the questions linked below, but I'll mention here that Programming WPF (Chris Sells, Ian Griffiths) says:

ShowDialog will always return true or false. ... Only after a dialog has been shown but before it's been closed is DialogResult null.

Similar question: When would ShowDialog() return null?

And: Why is DialogResult a nullable bool in WPF?

like image 179
lance Avatar answered Sep 21 '22 00:09

lance


According to the .NET reflector, Microsoft.Win32.OpenFileDialog.ShowDialog is implemented by a base class, Microsoft.Win32.CommonDialog. That implementation has only one return clause:

return new bool?(this.RunDialog(activeWindow));

RunDialog returns a bool, not a bool?.

bool? is just a C# shorthand for System.Nullable<bool>. The constructor of System.Nullable<bool>, according to reflector again, sets the value of the nullable to its parameter, and marks its hasValue property as true.

So... you shouldn't ever get a null result. A quick test confirms that closing the dialog without canceling (red x button) indeed returns a false value, not a null.

The Windows Forms version of OpenFileDialog returns a DialogResult, which has a wider range of values.

like image 41
Oren Trutner Avatar answered Sep 22 '22 00:09

Oren Trutner