2011-06-19 14 views
7

ユーザーがフィールドに入力するときに1から10までの整数を入力する必要があることを確認し、確認するコードがあります。C# - テキストボックスの検証

ユーザーがフィールドに注目すると、「不良」データ(「fdgfdg」など)がフィールドに残っていますが、フィールド上でフォーカスが失われたときの様子を示すことができます。データが有効でない場合は、代わりにデフォルト値が入力されます。 5

private void textBox4_TextChanged(object sender, EventArgs e) 
     { 
      try 
      { 
       int numberEntered = int.Parse(textBox4.Text); 
       if (numberEntered < 1 || numberEntered > 10) 
       { 
        MessageBox.Show("You must enter a number between 1 and 10"); 
       } 
      } 
      catch (FormatException) 
      { 

       MessageBox.Show("You need to enter an integer"); 
      } 
     } 
+1

@Gats:これはこれはリサイズではありません... –

+0

リサイズデスクトップアプリですウェブページ –

+1

@Gats:ウェブアプリケーションであっても、サーバー側の検証は必須です。クライアント側の検証は、サーバー側の検証に対する便利な追加でなければなりません。 –

答えて

14

デフォルト値を設定します。 LeaveLostFocusはあなたのケースで使用するよう最善を発射しません特定のシナリオの下では

Validatingイベントです:

textBox1.Validating += new CancelEventHandler(textBox1_Validating); 


    void textBox1_Validating(object sender, CancelEventArgs e) 
    { 
     int numberEntered; 

     if (int.TryParse(textBox1.Text, out numberEntered)) 
     { 
      if (numberEntered < 1 || numberEntered > 10) 
      { 
       MessageBox.Show("You have to enter a number between 1 and 10"); 
       textBox1.Text = 5.ToString(); 
      } 
     } 
     else 
     { 
      MessageBox.Show("You need to enter an integer"); 
      textBox1.Text = 5.ToString(); 
     } 
    } 
+0

ありがとう、それは素晴らしい例です – Jay

0

hereを持って、私はあなたがここで行うようにあなたが手圧延検証されている場合、あなたがする必要があるすべてはあなたがします。MessageBox.Show後にデフォルト値を設定することですTryParse

0

会社全体でこのロジックを散乱させないので:私はあなたが検証のための任意のフレームワークをサポートしていないと思いますが、あなたはこれを見て可能性があり、標準的リサイズで()

電子テキストボックスコントロールのLeaveイベントを検証し、ここで使用することができますいくつかのイベント、LeaveLostFocusValidatingMSDN here上のこれらの様々なイベントのより多くの議論があるがあります

関連する問題