方法: Windows フォーム ErrorProvider コンポーネントを使用してフォーム妥当性検査でエラー アイコンを表示する

Windows フォーム ErrorProvider コンポーネントを使用すると、ユーザーが無効なデータを入力した場合にエラー アイコンを表示することができます。 2 つのコントロールの間でタブ移動を行い、それによって検証コードを呼び出すには、フォーム上に 2 つ以上のコントロールが必要です。

コントロールの値が無効な場合にエラー アイコンを表示するには

  1. 2 つのコントロール (テキスト ボックスなど) を Windows フォームに追加します。

  2. フォームに ErrorProvider コンポーネントを追加します。

  3. 1 つ目のコントロールを選択し、その Validating イベント ハンドラーにコードを追加します。 このコードが正常に実行されるようにするには、この手順がイベントに関連付けられている必要があります。 詳細については、「方法: Windows フォームで実行時にイベント ハンドラーを作成する」を参照してください。

    次のコードを使用して、ユーザーが入力したデータの有効性をテストします。データが無効な場合は、SetError メソッドが呼び出されます。 SetError メソッドの最初の引数によって、アイコンを横に表示するためのコントロールが指定されます。 2 つ目の引数は、表示するエラー テキストです。

    Private Sub TextBox1_Validating(ByVal Sender As Object, _  
       ByVal e As System.ComponentModel.CancelEventArgs) Handles _  
       TextBox1.Validating  
          If Not IsNumeric(TextBox1.Text) Then  
             ErrorProvider1.SetError(TextBox1, "Not a numeric value.")  
          Else  
             ' Clear the error.  
             ErrorProvider1.SetError(TextBox1, "")  
          End If  
    End Sub  
    
    protected void textBox1_Validating (object sender,  
       System.ComponentModel.CancelEventArgs e)  
    {  
       try  
       {  
          int x = Int32.Parse(textBox1.Text);  
          errorProvider1.SetError(textBox1, "");  
       }  
       catch (Exception ex)  
       {  
          errorProvider1.SetError(textBox1, "Not an integer value.");  
       }  
    }  
    
    private:  
       System::Void textBox1_Validating(System::Object ^  sender,  
          System::ComponentModel::CancelEventArgs ^  e)  
       {  
          try  
          {  
             int x = Int32::Parse(textBox1->Text);  
             errorProvider1->SetError(textBox1, "");  
          }  
          catch (System::Exception ^ ex)  
          {  
             errorProvider1->SetError(textBox1, "Not an integer value.");  
          }  
       }  
    

    (Visual C#、Visual C++) フォームのコンストラクターに次のコードを配置して、イベント ハンドラーを登録します。

    this.textBox1.Validating += new  
    System.ComponentModel.CancelEventHandler(this.textBox1_Validating);  
    
    this->textBox1->Validating += gcnew  
       System::ComponentModel::CancelEventHandler  
       (this, &Form1::textBox1_Validating);  
    
  4. プロジェクトを実行します。 1 つ目のコントロールに無効なデータ (この例では数値以外) を入力して、2 つ目にタブ移動します。 エラー アイコンが表示されたら、マウス ポインターでそれをポイントし、エラー テキストを確認します。

関連項目