[Tips] Validatingイベントを使用する その2 ~ ErrorProviderコントロールとの組み合わせ ~

[Tips] Validatingイベントを使用する その1 では基本的な使い方について説明しました。
今回は、Validatingイベントと ErrorProviderコントロールを組み合わせて、不正な文字が入力さている場合にエラーアイコンを表示する方法について説明します。

デザインは以下のようにします。
前回のデザインに ErrroProviderコントロールを追加しただけです。

画面デザイン

不正な文字の入力チェックは、前回同様 Validatingイベントで行います。
不正な文字が入力されていた場合は、errorProviderコントロールの SetErrorメソッドを呼び出すコードを追加します。
そして、入力チェックにおいて不正な文字が見つからなかった場合(要するに Validatingイベントで e.Cancel = trueにしなかった場合)は、エラーが発生していないことになるので ErrorProviderコントロールの SetErrorメソッドでエラー状態をクリアしてあげます。

以下にコード例を示します。

VBの例

Private Sub txtData1_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles txtData1.Validating
    ' 不正な文字「.」が含まれているか?
    If txtData1.Text.IndexOf(".") > -1 Then
        MessageBox.Show("不正な文字「.」が含まれています")

        ' 後続のイベントをキャンセル
        e.Cancel = True

        'txtData1 にエラーアイコンとメッセージの表示をセット
        errorProvider1.SetError(txtData1, "不正な文字が入力されています。")
    End If
End Sub

Private Sub txtData1_Validated(sender As Object, e As EventArgs) Handles txtData1.Validated
    'txtData1のエラーを解除
    errorProvider1.SetError(txtData1, "")
End Sub

C#の例

private void textBox1_Validating(object sender, CancelEventArgs e)
{
    // 不正な文字「.」が含まれているか?
    if (txtData1.Text.IndexOf('.') > -1 && this.ActiveControl != txtData1)
    {                
        MessageBox.Show("不正な文字「.」が含まれています");

        // 後続のイベントをキャンセル
        e.Cancel = true;

        // txtData1 にエラーアイコンとメッセージの表示をセット
        errorProvider1.SetError(txtData1, "不正な文字が入力されています。");
    }
}

private void txtData1_Validated(object sender, EventArgs e)
{
    // txtData1のエラーを解除
    errorProvider1.SetError(txtData1, "");
}

実行例は以下の通りです。
実行例

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です