9

OpenFileDialogShowDialogメソッドは、ユーザーが [OK] をクリックした場合は true に設定され、[キャンセル] をクリックした場合は false に設定された null 許容ブール値を返します。いつ戻ってきnullますか?ドキュメントには記載されていません。

4

3 に答える 3

12

これは、以下にリンクされている質問に記載されていますが、プログラミング WPF (Chris Sells、Ian Griffiths)が述べていることをここで言及します。

ShowDialog は常に true または false を返します。... ダイアログが表示された後でのみ、閉じられる前に DialogResult は null になります。

同様の質問: ShowDialog() が null を返すのはいつですか?

And: DialogResult が WPF で null 許容の bool なのはなぜですか?

于 2009-08-11T18:05:06.140 に答える
3

.NET Reflectorによると、はMicrosoft.Win32.OpenFileDialog.ShowDialog基本クラス によって実装されMicrosoft.Win32.CommonDialogます。その実装には return 句が 1 つしかありません。

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

RunDialogboolではなく を返しますbool?

bool?は単にC# の省略形ですSystem.Nullable<bool>。のコンストラクターはSystem.Nullable<bool>、リフレクターによると、nullable の値をそのパラメーターに設定し、その hasValue プロパティを true としてマークします。

だから…結果を出してはいけませんnull。簡単なテストでは、キャンセルせずにダイアログを閉じる (赤い x ボタン) と、実際にはfalseではなく値が返されることが確認されていますnull

OpenFileDialog の Windows フォーム バージョンは、より広い範囲の値を持つ DialogResult を返します。

于 2009-08-11T18:06:23.127 に答える
1

私の推測では、OpenFileDialog は bool を返しますか? 実際に null の結果を返す可能性がある他の WPF ダイアログとの一貫性を保つため。

于 2009-08-12T08:17:59.347 に答える