Quando faz Microsoft.Win32.OpenFileDialog.ShowDialog () return null?
-
12-09-2019 - |
Pergunta
OpenFileDialog 's método ShowDialog retorna um booleano anulável, conjunto para true se o usuário clicou OK ou falso, se ele clicou em Cancelar. Quando ele voltar null
? A documentação não diz.
Solução
Isto é afirmado nas questões ligadas abaixo, mas vou mencionar aqui que Programação WPF (Chris Sells, Ian Griffiths) diz:
ShowDialog sempre retornará verdadeiro ou falso. ... Só depois de um diálogo tem foi mostrado, mas antes de ter sido fechada é DialogResult nulo.
pergunta homóloga: Em que ShowDialog () return null
Outras dicas
De acordo com a .NET refletor , Microsoft.Win32.OpenFileDialog.ShowDialog
é implementado por uma classe base , Microsoft.Win32.CommonDialog
. Que a implementação tem apenas uma cláusula de retorno:
return new bool?(this.RunDialog(activeWindow));
RunDialog
retorna um bool
, não um bool?
.
bool?
é apenas um C # taquigrafia para System.Nullable<bool>
. A construtor de System.Nullable<bool>
, de acordo com um reflector, mais uma vez, define o valor de o nulo ao seu parâmetro e marcas de sua propriedade hasValue como verdadeiro.
Então ... você não deve nunca obter um resultado null
. A confirma teste rápido que fechar o diálogo sem cancelar (botão x vermelho), na verdade retorna um valor false
, não um null
.
O Windows Forms versão do OpenFileDialog retorna um DialogResult, que tem um ampla gama de valores .
Meu palpite é que OpenFileDialog retorna bool? para ser consistente com outras caixas de diálogo do WPF que realmente pode retornar um resultado nulo.