2009-07-22 19 views
0

テキストファイルのテキスト値の設定を自分の設定ファイルの変数にバインドしています。私はこのテキストボックスからの入力が1より大きい整数の場合にのみ有効であると考えています。現在、私がやっていたことは、ユーザがボックス内の任意のものを書き込めるようにすることです。検証機能問題は、テキストボックスが編集されるとすぐにSettingsクラスの私のバインディング変数が更新されているように思えます。これはスキップしたい動作です。これどうやってするの?(.net)設定の基本的な質問

答えて

0

値をテキストボックスにバインドしないでください。 Matthewが言うように、「テキストボックスでOnValidatingイベントを使用して検証コードを実行する」とし、OnValidatedイベントを使用して構成値を更新します。

0

テキストボックスでOnValidatingイベントを使用して検証コードを入力し、検証が成功しなかった場合はe.Cancelをtrueに設定して(ユーザーに何らかの形で、おそらくMessageBox)通知します。

+0

Validatingイベントにバインディングが含まれているかのように見えません。あなたのコントロールがフォーカスを失ったときに見えます。問題は同じですが、コントロールをバインドするときは、コントロールに必要なものを入力するとすぐにバインディング変数が更新されます。私は、ユーザーが最初にすべてを書かなければならないように強制したくありません。ユーザーが保存ボタンを押した後(そして検証コードを実行したとき)、バインディング変数をすべて正しいものにします。 –

+1

drs9222がdownvotedされても、これはあなたができるすべてです。バリデーションが成功する前にバインディングを更新すべきではありません。 –

+0

バインディングを停止する方法と、バインディングを更新する方法はありますか? –

0

MasktedTextBox(マスクの有無にかかわらず)を使用し、Validating(またはTypeValidationCompleted)イベントにサブスクライブしてカスタム検証を追加することができます。バウンド値は、検証が正常に完了した後にのみ保存されると私は信じています。