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.

Foi útil?

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

E: Por que é DialogResult um bool anulável no WPF

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top