无需在每个表单中包含验证代码即可验证多个表单

时间:2014-07-16 03:19:21

标签: c# forms validation

我正在使用C#开发一个应用程序,该应用程序的表单可以从不同状态的用户那里获取相似的输入。

我需要能够验证它们,因此我使用的是 errorproviders

代码工作正常,但我注意到,根据我目前的知识,如果我想验证多个表单,那么我将不得不将复制粘贴到每个类似表单的验证代码,我想知道是否有通过将验证代码放在一个可以被所有表单访问的中心位置而不必为每个表单编写代码来重用验证代码的简单方法。

下面是C#

中验证码的片段
//Methods to verify and user inputs
        private bool ValidateName()
        {
            bool bStatus = true;
            if (name.Text == string.Empty)
            {
                errorProvider2.SetError(name, "");
                errorProvider1.SetError(name, "Please Enter Name");
                bStatus = false;
            }
            else
            {
                errorProvider1.SetError(name, "");
                errorProvider2.SetError(name, "Good");
                bstatus = true;
            }
            return bStatus;
        }
        private void name_Validating(object sender, CancelEventArgs e)
        {
            ValidateName();
        }

我希望能够做的是使用 name_Validating()函数调用它的方法 ValidateName()。表单有一个名为name的文本框来验证它。

1 个答案:

答案 0 :(得分:0)

你会想要这些内容。不是在项目前面,所以没有精确的语法。它应该指向正确的方向

//Methods to verify and user inputs
private bool ValidateName(string aName)
{
    bool bStatus = true;
    // You'll need to fill this bit
    // cast or instatiate a textbox here, let's call it txt_box_name
    // 
    // cast : if you pass an object that you know is a textbox 
    // 
    // instantiate : you can create an instance of a textbox with Activator.CreateInstance
    //   more on that here: http://msdn.microsoft.com/en-us/library/system.activator.createinstance%28v=vs.110%29.aspx
    //   
    //  and then continue as normal with your generic text box field
    if (txt_box_name.Text == string.Empty)
    {
        // do something
    }
    else
    {
        // do something else
    }
    return bStatus;
}
private void name_Validating(object sender, CancelEventArgs e)
{
    ValidateName("name");
    // or :
    //ValidateName("username");
}