在我的winforms项目中,对于特定表单,我有近10个名字,姓氏,年龄,职业等控件。(包括文本框,下拉列表)和SAVE按钮
我创建了表示这些控件的数据源的类,并在同一个类中实现了验证方法,该类对每个属性进行验证并抛出验证消息。
当我想将焦点设置在UI中引发验证错误的控件时,问题就出现了。
我如何实现这一点。将控件传回课堂是不好的做法。
我是否需要更改我在课程级别实施验证的方式?
有任何建议/链接吗?
答案 0 :(得分:1)
我建议您使用.NET提供的实际验证技术:
我还强烈建议添加ErrorProvider
并使用它来指出错误是什么。没有给出这方面的例子,但谷歌充满了很好的例子。
您可以保留验证类,只需将每个控件订阅到该类的方法。
例如(原谅K& R,在S.O.上写的更容易,这也可能需要一些调整,我是从记忆中写的):
public MyForm : Form {
Validator validator;
public MyForm() {
validator = new Validator(/*Arguments here*/);
}
public override void OnLoad(EventArgs e) {
base.OnLoad(e);
targetControl.Validating += (o,e) => {
try {
validator.Validate(e);
}
catch(YourException exc) {
e.Cancel = true; //References the validating event args
//Whatever else you want to do
}
}
}
}