我在我的 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将继续绘制额外的图标而不删除旧图标。
当与_control2交互时,_errorProvider2会恢复正常,但_control1的_errorProvider1会做同样的事情,直到它被“点击”。
请注意,底层控制不影响它;它不必是复选框。
我尝试了什么:
- 每个表单/控件仅使用一个 ErrorProvider,
- 在设置 ErrorProvider 之前关注每个控件,
- 不清除 ErrorProviders
非常感谢任何帮助,谢谢!