C# Windows窗体-错误提供程序重叠图标
我正在使用ErrorProvider中的自定义图标C# Windows窗体-错误提供程序重叠图标,c#,.net,winforms,errorprovider,C#,.net,Winforms,Errorprovider,我正在使用ErrorProvider中的自定义图标 ErrorProvider.BlinkStyle = ErrorBlinkStyle.NeverBlink 我遇到了一个问题,即使用类似于此代码的重叠图标: public partial class TestForm : Form { private ErrorProvider _errorProvider1; private ErrorProvider _errorProvider2; private CheckBo
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之前聚焦每个控件
- 不清除错误提供程序
非常感谢您的帮助,谢谢 使用多个ErrorProvider是没有意义的,其中一个可以处理表单上所有控件的错误。最简单的方法,以避免由于试图羊群多个供应商的错误。我不能复制。一切如期进行。发布重现问题的代码。此外,我认为遵循Hans的建议应该可以解决您的问题。我只是在VS2017上尝试了完全相同的代码,而不是在VS2015(以及新的.Net版本)上尝试了相同的代码,而且它似乎在@HansPassant上起到了作用。我提到,我尝试了两种方法,但这不是这里的问题。为了简单起见,我刚刚发布了带有多个错误提供程序的版本。