0

(WPFアプリケーションを使用)これは状況です:

3 つのユーザー入力フィールドがあります。1 は時間、1 は分、1 は秒です。その後ろには、ユーザー入力によって作成されたタイムスパンを半分に分割するだけの「時間を半分に分割する」ためのチェックボックスがあります。

しかし、チェックボックスがチェックされると、ユーザーが時間/分/秒のフィールドに数字を入力した場合、最初にコードでチェックを行います。すべてが 0 の場合、ユーザーに何か入力する必要があることを知らせるメッセージ ボックスがポップアップ表示されます。しかし、この時点で、チェックボックスのチェックを「キャンセル」したいと思います。

e.Cancel などを使用する必要がありますか? または、メッセージボックスと一緒に IsChecked を false に戻す必要がありますか?

これに対処する正しい方法は何だろうと思っています。

4

2 に答える 2

4

あなたのアプローチは間違っていると思います。チェックボックスは、有効な入力がある場合にのみ有効にする必要があります。テキストボックスに LostFocus イベントを設定し、そのイベント内ですべての入力値を確認できます。入力が正しい場合は、チェックボックスを有効にし、そうでない場合は無効にします。チェックマークを外す必要はありません

于 2012-04-18T12:24:51.637 に答える
1

チェックボックスをクリックするアクションには、2 段階の動作があります。

  • 時刻の検証
  • 半分に割ると

これらの 2 つのステップを固有の操作で維持したい場合は、チェックボックスをオンにするアクションが実際にイベントをトリガーし、検証ステップが実行され、チェック外します。checkbox.IsCheckedこの観点からは に設定した方が正しいと思いますfalse

スティーブが指摘したように、検証ステップを操作から分離します。テキストボックスのイベントにチェック機能を配置して、入力が無効な場合はチェックボックスを無効にします。TextChangedすべて問題なければ、 を有効にできますCheckBox。無効にしない場合は、チェックされている場合はチェックを外してください。

于 2012-04-18T12:28:47.750 に答える