46

System.Windows.ShowDialog()「true」を返すにはどうすればよいですか?

私はこれに少し慣れていません。 System.Windows.ShowDialogの戻り値の型はbool? を打ったとき、trueを打ったときに戻るはずです。しかし、どちらが公式の送信ボタン であるかを指定する方法がわかりません。SubmitfalseCancelButton

編集: 関連するメモとして、null を返す方法について知りたいです。

4

3 に答える 3

48

http://msdn.microsoft.com/en-us/library/system.windows.window.showdialog.aspx

ShowDialog はNullable<Boolean>、アクティビティが受け入れられたかキャンセルされたかを示す値を返します。戻り値は、ウィンドウが閉じる前の DialogResult プロパティの値です (DialogResult を参照)。

基本的に、特定のボタンを押すのではなく、DialogResult の値を設定することで決定します。ボタンの動作を決定します。

于 2009-02-03T00:21:37.260 に答える
22

WPF では、Button.IsDefaultプロパティを true に設定して、ボタンがウィンドウの「送信」ボタンであることを指定します。これにより、DialogResultがtrueでウィンドウが閉じられるかどうかは100%確信が持てません。そうでない場合は、次のように Click イベントを処理する必要があります。

this.DialogResult = true;

編集

同様に、Button.IsCancelプロパティを使用して、ボタンをフォームの「キャンセル」ボタンにすることができます。

編集 2

ShowDialog が null 可能である理由は、フォームが送信されるかキャンセルされるまで null であるため、バックグラウンド スレッドでダイアログを見ている場合にそれをテストできるからだと思います。私はそれを試していませんが、プロパティに 3 番目の「不明」(null) 状態を導入する論理的な理由のようです。

于 2009-02-03T00:23:01.953 に答える
8

DialogResult を true に設定すると、ShowDialog は true を返します。DialogResult を false に設定すると、ShowDialog は false を返します。DialogResult を設定せずにダイアログを閉じた場合 (ユーザーが右上隅の赤い X をクリックした場合)、ShowDialog は null を返します。

IsDefault を true に設定すると、ボタンの外観が少し異なり、Enter キーを押すとこのボタンが「クリック」されます。

IsCancel を true に設定すると、esc を押すとこのボタンが「クリック」されます。

于 2009-02-03T13:12:07.517 に答える