[ErrorProvider][Tips] 表示されるアイコンとコントロールの間を調整する


SetIconPaddingメソッドを使用すると、表示されるアイコンとコントロールの間の余白を設定することができます(単位はピクセルです)。

下記は、表示されるアイコンとコントロールの間を調整する例です。

フォームロード時に、テキストボックスと表示されるエラーアイコンの間が32ピクセルになるように設定しています。

VBの例

' フォームロード時の処理
Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    '★★★TextBox1とErrorProvider1の間に32ピクセル空けます★★★
    ErrorProvider1.SetIconPadding(txtAge, 32)
End Sub

' テキストボックスの内容検証処理
Private Sub txtAge_Validating(sender As System.Object, e As System.ComponentModel.CancelEventArgs) Handles txtAge.Validating
    Try
        '入力値を数値に変換する
        Dim iNum As Integer = Integer.Parse(txtAge.Text)

        '正常に整数に変換できた場合はエラーをクリアする
        ErrorProvider1.SetError(txtAge, "")
    Catch ex As Exception
        'イベントをキャンセルする
        e.Cancel = True

        '例外が発生したのでエラーを表示する
        ErrorProvider1.SetError(txtAge, "整数値以外の文字が入力されました!!")
    End Try
End Sub

C#の例

// フォームロード時の処理
private void Form3_Load(object sender, EventArgs e)
{
    // ★★★TextBox1とErrorProvider1の間に32ピクセル空けます★★★
    errorProvider1.SetIconPadding(txtAge, 32);
}

// テキストボックスの内容検証処理
private void txtAge_Validating(object sender, CancelEventArgs e)
{
    try
    {
        // 入力値を数値に変換する
        int iAge = int.Parse(txtAge.Text);

        // 正常に整数に変換できた場合はエラーをクリアする
        errorProvider1.SetError(txtAge, "");
    }
    catch (Exception)
    {
        e.Cancel = true;

        // ★★★例外が発生したのでエラーを表示する★★★
        errorProvider1.SetError(txtAge, "整数値以外の文字が入力されました!!");
    }
}

[ErrorProvider][Tips] 任意のアイコンを表示する


ErrorProviderを使用してエラーメッセージを表示した場合は、既定のアイコン(背景が赤の、円で囲んだ感嘆符)が表示されます。

これを任意のアイコンに変更するには、ErrorProviderのIconプロパティに設定します。

下記は、ErroProviderのアイコンを、任意のアイコンに変更して表示する例です。

フォームロード時にInfo.icoというアイコンを設定しています。

VBの例

' フォームロード時の処理
Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    '★★★任意のアイコンを設定する★★★
    ErrorProvider1.Icon = New Icon("Info.ico")
End Sub

' テキストボックスの内容検証処理
Private Sub txtAge_Validating(sender As System.Object, e As System.ComponentModel.CancelEventArgs) Handles txtAge.Validating
    Try
        '入力値を数値に変換する
        Dim iNum As Integer = Integer.Parse(txtAge.Text)

        '正常に整数に変換できた場合はエラーをクリアする
        ErrorProvider1.SetError(txtAge, "")
    Catch ex As Exception
        'イベントをキャンセルする
        e.Cancel = True

        '例外が発生したのでエラーを表示する
        ErrorProvider1.SetError(txtAge, "整数値以外の文字が入力されました!!")
    End Try
End Sub

C#の例

// フォームロード時の処理
private void Form2_Load(object sender, EventArgs e)
{
    // 任意のアイコンを設定する
    errorProvider1.Icon = new Icon("Info.ico");
}

// テキストボックスの内容検証処理
private void txtAge_Validating(object sender, CancelEventArgs e)
{
    try
    {
        // 入力値を数値に変換する
        int iAge = int.Parse(txtAge.Text);

        // 正常に整数に変換できた場合はエラーをクリアする
        errorProvider1.SetError(txtAge, "");
    }
    catch (Exception)
    {
        e.Cancel = true;

        // ★★★例外が発生したのでエラーを表示する★★★
        errorProvider1.SetError(txtAge, "整数値以外の文字が入力されました!!");
    }
}

[ErrorProvider][Tips] 指定したコントロールにエラーメッセージを表示する


ErrorProviderコンポーネントでは、SetErrorメソッドを使用して指定したコントロールの脇にエラーエラーメッセージを表示させることができます。

たとえば、テキストボックスの脇にエラーメッセージを表示するには下記のようにします

VBの例

ErrorProvider1.SetError(TextBox1, "エラーメッセージ")

C#の例

errorProvider1.SetError(textBox1, "エラーメッセージ");

多くのコントロールはValidatingイベントという、コントロールの内容検証時に発生するイベントを持っています。

ErroProviderのSetErrorメソッドは、このValidatingメソッドと組み合わせて使用するとよいでしょう。

たとえば、年齢(整数値)を入力させたいテキストボックスがあるとします。

もしも、テキストボックスで整数値以外の文字が入力されたら、SetErrorメソッドでエラーメッセージを表示し、正しく入力された場合はエラーメッセージをクリアする、といったように使用します。

このとき、TextBoxが持つValidatingイベントのe.CancelにTrueを設定するとイベントをキャンセルすることができ、正しい値が入力されるまでの間はほかのコントロールにフォーカスを与えないようにすることができます。

下記は、指定したコントロールにエラーメッセージを表示する例です。

「年齢」欄にあるテキストボックスに整数値以外の文字が入力された場合はエラーメッセージを表示し、他のコントロールにフォーカスを与えないようにします。

VBの例

' テキストボックスの内容検証処理
Private Sub txtAge_Validating(sender As System.Object, e As System.ComponentModel.CancelEventArgs) Handles txtAge.Validating
    Try
        '入力値を数値に変換する
        Dim iNum As Integer = Integer.Parse(txtAge.Text)

        '★★★正常に整数に変換できた場合はエラーをクリアする★★★
        ErrorProvider1.SetError(txtAge, "")
    Catch ex As Exception
        'イベントをキャンセルする
        e.Cancel = True

        '★★★例外が発生したのでエラーを表示する★★★
        ErrorProvider1.SetError(txtAge, "整数値以外の文字が入力されました!!")
    End Try
End Sub

C#の例

// テキストボックスの内容検証処理
private void txtAge_Validating(object sender, CancelEventArgs e)
{
    try
    {
        // 入力値を数値に変換する
        int iAge = int.Parse(txtAge.Text);

        // ★★★正常に整数に変換できた場合はエラーをクリアする★★★
        errorProvider1.SetError(txtAge, "");
    }
    catch (Exception)
    {
        e.Cancel = true;

        // ★★★例外が発生したのでエラーを表示する★★★
        errorProvider1.SetError(txtAge, "整数値以外の文字が入力されました!!");
    }
}