我正在尝试以可重复使用的方式创建验证。
目的: 使验证控件可重用。
错误提供程序应与动态传递的控件关联,并且可以在运行时设置或清除。
当用户按下OnClick事件时,所有控件都会使用自己的错误提供程序进行验证。
public bool IsFieldEmpty(ref TextBox txtControl, Boolean SetErrorProvider,string msgToShowOnError)
{
ErrorProvider EP = new ErrorProvider();
if (txtControl.Text == string.Empty)
{
if(SetErrorProvider==true)
EP.SetError(txtControl, msgToShowOnError);
return true;
}
else
{
if(SetErrorProvider==true)
EP.Clear();
return false;
}
}
问题:
每次调用该函数时,都会创建一个我不想要的新errorprovider对象。 每个控件都不应该有超过1个错误提供程序,我应该能够像在asp.net中一样搜索它,以便在页面上搜索某些控件。
我该怎么做
答案 0 :(得分:3)
在大多数情况下,您在表单上只需要一个ErrorProvider实例。
E.g。
ErrorProvider errorProvider1 = new ErrorProvider();
或者只是将工具箱中的一个拖到表单上。
调用ErrorProvider时,提供控件和消息,
errorProvider1.SetError (dateTimePicker1, "HEY BAD DATE");
清除错误......
errorProvider1.SetError (dateTimePicker1, "");
因此,在大多数情况下,您只需要一个ErrorProvider实例。
答案 1 :(得分:0)
像这样对PropertyOnDemand进行制作,并在每次需要新的ErrorProvider
时访问该属性 private ErrorProvider _ErrorProvider = null;
//PropertyOnDemand
private ErrorProvider ErrorProviders
{
get
{
if (_ErrorProvider == null)
{
_ErrorProvider = new ErrorProvider();
return _ErrorProvider;
}
else
return _ErrorProvider;
}
}
public bool IsFieldEmpty(ref TextBox txtControl, Boolean SetErrorProvider, string msgToShowOnError)
{
if (txtControl.Text == string.Empty)
{
if (SetErrorProvider == true)
ErrorProviders.SetError(txtControl, msgToShowOnError);
return true;
}
else
{
if (SetErrorProvider == true)
ErrorProviders.Clear();
return false;
}
}