为TextBox验证创建方法

时间:2013-05-22 20:38:12

标签: c# winforms

我有这个我期待着工作的大项目。会有很多带有大量文本框的表单,我不想在每个表单中编写代码。我想用方法创建一个类来验证这些文本框。我不知道怎么做。

我希望此方法接受文本框,例如:ValidateTextBoxForInt(textbox1)并验证它。 我将以这种方式使用它:

return ValidateTextBoxForInt(textbox1, textbox2);

(我可能只有1个文本框,可能是100个文本框...取决于需要为int验证的文本框数量。)

任何人都可以推荐我吗?帮我这个?

谢谢:)

2 个答案:

答案 0 :(得分:1)

您可以拥有一个继承自常规表单的自定义表单。它将有一些Validate事件,它将触发它遍历所有包含的TextBox,验证它们并提供一些帮助消息,让用户知道错误。

通过TextBoxes进行枚举时,不要忘记Form.Controls是树,而不是列表,因此您可能需要先递归或展平此树,以考虑面板内的TextBoxes,制表符控件等。

答案 1 :(得分:0)

创建一个验证器类并调用它传入一个控件,该控件是所有TextBox控件的父控件,例如Panel:

public class Validator
{
    public bool ValidateAsInt(Control control)
    {
        bool valid = true;

        if (control.GetType() == typeof(TextBox))
        {
            int outVal = 0;
            if (0 == int.TryParse(((TextBox)control).Text, outVal))
            {
                valid = false;
            }
        }

        if (valid)
        {
            foreach (Control childControl in control.Controls)
            {
                if (!ValidateAsInt(childControl))
                {
                    valid = false;
                    break;
                }
            }
        }
        return valid;
    }
}