验证错误后,将焦点放在控件上

时间:2012-07-12 14:25:18

标签: c# winforms validation

在我的winforms项目中,对于特定表单,我有近10个名字,姓氏,年龄,职业等控件。(包括文本框,下拉列表)和SAVE按钮

我创建了表示这些控件的数据源的类,并在同一个类中实现了验证方法,该类对每个属性进行验证并抛出验证消息。

当我想将焦点设置在UI中引发验证错误的控件时,问题就出现了。

我如何实现这一点。将控件传回课堂是不好的做法。

我是否需要更改我在课程级别实施验证的方式?

有任何建议/链接吗?

1 个答案:

答案 0 :(得分:1)

我建议您使用.NET提供的实际验证技术:

Validating Validated

我还强烈建议添加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
            }
        }
    }
}
相关问题