2011-01-09 8 views
2

どこでも検索していますが、この件に関する良い例やテキストが見つかりませんでした。.NET Windowsフォームを検証する正しい方法は何ですか?

ダイアログボックスで[OK]ボタンを押したときのユーザー名とパスワードの有効性を確認したいと思います。

終了イベントでこれを行い、検証が失敗した場合にダイアログを閉じる必要がありますか?またはOKの代わりにDialogResultをnoneに設定します。これらはすべて、ちょっとやり方が間違っているようです。私もValidatedValidatingイベントを見ましたが、有効な入力に対してただ1つのコントロールを検証するものではありませんか?

[OK]ボタンを押したときに複数のコントロールを一緒にチェックしてフォームのキャンセルをキャンセルするにはどうすればよいですか?

答えて

3

あなたのやりたいことによって異なります。ユーザーが有効なユーザー名/パスワードである可能性のあるものを入力したことを確認するには、検証イベントを使用します(十分な時間がかかっているかどうかなど)。ユーザー名/パスワードが有効なアカウントに対応していることを確認するには、[OK]ボタンを押して認証情報を確認するまで待つ必要があります。彼らが悪い場合は、メッセージボックス(または何でも)を投げ、ダイアログが閉じないようにすることができます(DialogResult.None)。

+0

基本的には、私がやりたいことだった「DialogResult.None」もうまくいきましたが、そうは思われませんでした何かの 'none'結果値が実際にダイアログを取り消すことが私にはわかります。しかし、他の選択肢がないと思います。 – sekmet64

+0

+1:質問をもう一度読んで、「入力検証」ではなく「ビジネス検証」についてです。これは正解です。 –

+0

しかし、検証が失敗した場合、Closeを呼び出す必要はありますか? –

1

各コントロールはValidatingイベントを提供します。このイベントでは、単一のコントロールの検証を実装できます。デフォルトでは、コントロールがフォーカスを失うと、この検証がトリガーされます。 Validatedイベントとは対照的に、このイベントのハンドラはCancelEventArgsを受信します。したがって、検証が失敗した場合、現在の操作をキャンセルできます(フォーカスを失う)。

複雑な検証を処理する場合は、フォームのAutoValidateプロパティをAutoValidate.Disableに設定することができます。これにより、暗黙的な検証が無効になります(前述のデフォルトの動作)。代わりにValidateChildrenに電話して、すべての子コントロールの明示的な検証をトリガする必要があります。

+0

+1 AutoValidate&ValidateChildrenについての情報 –

関連する問題