web-dev-qa-db-ja.com

C#winformのテキストボックスの入力の検証

データベースに保存する前に、ユーザーがテキストボックスに何を書いているかを確認したい。これを行う最良の方法は何ですか?私はいつでもifやtry-catchブロックをいつでも書くことができると思いますが、もっと良い方法があるのではないかと思っていました。イベントの検証について読んだことがありますが、どのように使用できるかわかりません。

27
Rocshy

説明

TextBoxを検証する方法は多数あります。これは、キーストロークごとに、後で、またはValidatingイベントで実行できます。

TextBoxがフォーカスを失うと、Validatingイベントが発生します。たとえば、ユーザーが他のコントロールをクリックしたとき。セットe.Cancel = true TextBoxはフォーカスを失いません。

MSDN-Control.Validating Eventキーボード(TAB、SHIFT + TABなど)を使用してフォーカスを変更するとき、SelectまたはSelectNextControlメソッド、またはContainerControl.ActiveControlプロパティを現在のフォームに設定することにより、フォーカスイベントは次の順序で発生します

入る

GotFocus

去る

検証中

検証済み

LostFocus

マウスを使用するか、Focusメソッドを呼び出してフォーカスを変更すると、フォーカスイベントは次の順序で発生します。

入る

GotFocus

LostFocus

去る

検証中

検証済み

サンプル検証イベント

private void textBox1_Validating(object sender, CancelEventArgs e)
{
    if (textBox1.Text != "something")
        e.Cancel = true;
}

更新

ErrorProviderを使用して、TextBoxが無効であることを視覚化できます。チェックアウト WindowsフォームおよびC#でエラープロバイダーコントロールを使用

詳しくは

46
dknaack

WinFormsでは、ErrorProviderをValidatingイベントと組み合わせて使用​​して、ユーザー入力の検証を処理できます。 Validatingイベントは検証を実行するためのフックを提供し、ErrorProviderはエラー条件に関するフィードバックをユーザーに提供するためのNice一貫したアプローチを提供します。

http://msdn.Microsoft.com/en-us/library/system.windows.forms.errorprovider.aspx

9
Chris Taylor