我做了以下的类,以避免重复,如果是其他代码,一次又一次:
public class Error
{
private ErrorProvider errProvider;
public void SetError(Control control, string value)
{
errProvider = new ErrorProvider();
if (control.Text.Trim().Length == 0)
{
errProvider.SetError(control, value);
}
else
{
errProvider.SetError(control, "");
}
}
}而对文本框代码的验证是
private void textBox1_Validating(object sender, CancelEventArgs e)
{
erp.SetError(textBox1, "Please Enter Name");
}在文本框中键入文本后,当我按enter键时,它工作得很好;在文本框中没有输入任何东西的情况下,当我按Enter时,它也工作得很好,这意味着出现了removed.红色图标;但是
没有类,它可以很好地处理相同的代码。
最新消息?
发布于 2011-10-29 03:44:08
使用字段初始化器
private readonly ErrorProvider errProvider = new ErrorProvider();您应该为errProvider使用字段初始化器,因为每次调用Error.SetError时,都会构造ErrorProvider,并且构建的ErrorProvider不仅不会消失,而且还会被分层。
已更新
public class Error
{
private readonly ErrorProvider errProvider = new ErrorProvider();
public void SetError(Control control, string value)
{
if (control.Text.Trim().Length == 0)
{
errProvider.SetError(control, value);
}
else
{
errProvider.SetError(control, "");
}
}
}发布于 2011-10-29 04:01:14
将ErrorProvider的构造移动到声明行。因此,改变:
private ErrorProvider errProvider;至:
private ErrorProvider errProvider = new ErrorProvider(); 并去掉当前在SetError方法中的那个成员的初始化。
向我们展示如何以及何时创建和存储对您正在使用的Error类实例的引用也可能是有用的。
此外,将您的验证代码放入一个名为SetError的方法中会有一点误导(这会使您的代码更难维护)。我想把它命名为ValidateControlHasValue之类的东西。
https://stackoverflow.com/questions/7936438
复制相似问题