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");
        }
    }

    //...
}

我正在与_control1交互,而_control2有一些错误(已检查),因此_errorProvider2有一些错误集。每次调用ValidateAll方法时,它都会为_control1正确设置_errorProvider1 ,但_control2 _errorProvider2将继续绘制额外的图标而不删除旧图标。

起始视图

多次“单击”_control1 后

当与_control2交互时,_errorProvider2会恢复正常,但_control1_errorProvider1会做同样的事情,直到它被“点击”。

“点击”后 _control2

请注意,底层控制不影响它;它不必是复选框。

我尝试了什么:

  • 每个表单/控件仅使用一个 ErrorProvider,
  • 在设置 ErrorProvider 之前关注每个控件,
  • 不清除 ErrorProviders

非常感谢任何帮助,谢谢!

4

0 回答 0