OpenFileDialogのShowDialogメソッドは、ユーザーが [OK] をクリックした場合は true に設定され、[キャンセル] をクリックした場合は false に設定された null 許容ブール値を返します。いつ戻ってきnull
ますか?ドキュメントには記載されていません。
3 に答える
これは、以下にリンクされている質問に記載されていますが、プログラミング WPF (Chris Sells、Ian Griffiths)が述べていることをここで言及します。
ShowDialog は常に true または false を返します。... ダイアログが表示された後でのみ、閉じられる前に DialogResult は null になります。
.NET Reflectorによると、はMicrosoft.Win32.OpenFileDialog.ShowDialog
基本クラス によって実装されMicrosoft.Win32.CommonDialog
ます。その実装には return 句が 1 つしかありません。
return new bool?(this.RunDialog(activeWindow));
RunDialog
bool
ではなく を返しますbool?
。
bool?
は単にC# の省略形ですSystem.Nullable<bool>
。のコンストラクターはSystem.Nullable<bool>
、リフレクターによると、nullable の値をそのパラメーターに設定し、その hasValue プロパティを true としてマークします。
だから…結果を出してはいけませんnull
。簡単なテストでは、キャンセルせずにダイアログを閉じる (赤い x ボタン) と、実際にはfalse
ではなく値が返されることが確認されていますnull
。
OpenFileDialog の Windows フォーム バージョンは、より広い範囲の値を持つ DialogResult を返します。
私の推測では、OpenFileDialog は bool を返しますか? 実際に null の結果を返す可能性がある他の WPF ダイアログとの一貫性を保つため。