0

ErrorProvider でカスタム アイコンを使用しています。

ErrorProvider.BlinkStyle = ErrorBlinkStyle.NeverBlink

次のようなコードを使用して、アイコンが重なっているという問題があります。

public partial class TestForm : Form
{
    private ErrorProvider _errorProvider1;
    private ErrorProvider _errorProvider2;
    private CheckBox _control1;
    private CheckBox _control2;

    //...


    private void ValidateAll()
    {
        _errorProvider1.Clear();
        _errorProvider2.Clear();

        _errorProvider1.SetError(_control1, string.Empty);
        _errorProvider2.SetError(_control2, string.Empty);

        if(Validate(_control1.Checked))
        {
            _errorProvider1.SetError(_control1, "Error1");
        }

        if(Validate(_control2.Checked))
        {
            _errorProvider2.SetError(_control2, "Error2");
        }
    }

    //...
}

_control2にエラーがある (がCheckedである)間に_control1と対話しているため、 _errorProvider2にエラーが設定されています。ValidateAllメソッドが呼び出されるたびに、 _control1に対して_errorProvider1が正しく設定されますが、 _control2 _errorProvider2は古いアイコンを消去せずに余分なアイコンを描画し続けます。

開始ビュー

_control1 を複数回「クリック」した後

_control2と対話すると、_errorProvider2は通常に戻りますが、_control1_errorProvider1は「クリック」されるまで同じことを行います。

「クリック」後 _control2

基になる Control は影響しないことに注意してください。CheckBox である必要はありません。

私が試したこと:

  • フォーム/コントロールごとに 1 つの ErrorProvider のみを使用して、
  • ErrorProvider を設定する前に各コントロールにフォーカスし、
  • ErrorProviders をクリアしない

どんな助けでも大歓迎です、ありがとう!

4

0 に答える 0