如何避免重复验证事件Winforms

时间:2017-06-02 08:04:15

标签: c# winforms validating-event

我正在创建一个项目,它将包含三个表单,一个父表单,它将是一个加载表单的决策程序。由于两个子表单略有相似,因此大量验证是相同的。我有我的验证方法,然后在s= s.replaceAll("http://.+?(com|net|org|vn)/{0,1}","abc.com" + "&url=" + "$0"); 中调用我如何最小化Validating event中的重复数量,并且只有一个方法有一个验证事件,它控制了我的所有控件分享方法。

这是我广泛使用的方法的一个例子:

Validating events

这只是我的许多验证活动之一:

public bool numValidation(string strNum)       
{
    if (!string.IsNullOrWhiteSpace(strNum))
    {
        int temp;
        if (int.TryParse(strNum, out temp))
        {
            MessageBox.Show("Phone Number is a valid input: " + temp);
            return true;
        }
        else
        {
            MessageBox.Show(temp + "Is not Valid input!!");                            
        }        
    }

    return false;
}

我真的想知道如何清理代码并尽量减少重复。在此先感谢:)

2 个答案:

答案 0 :(得分:2)

如果您有很多常见内容,声明性验证可以帮助您清理代码。

MSDN - Extending Windows Forms with a Custom Validation Component Library

您还可以使用相同的Sub处理多个控件验证事件,使用辅助类来重用验证计算函数。

最后但并非最不重要的是,阅读有关IDataErrorInfo的内容。使用此界面,您可以将所有验证算法放在您的业务类中。

使用ErrorProvider组件和数据绑定

在Winforms中正常工作

答案 1 :(得分:0)

感谢@Steve解决了更好的代码。通过创建一个单独的静态类并简单地在具有公共函数的两个页面中的所有Validating Events中调用该方法来解决。

  private void txt_Fax_Validating(object sender, CancelEventArgs e)
        {
            Utillity.numValidation(txt_Fax.Text);
            txt_Fax.Clear();

        }

Utillity Class如下:

public static bool numValidation(string strNum)
    {
        if (!string.IsNullOrWhiteSpace(strNum))
        {
            int temp;
            if (int.TryParse(strNum, out temp))
            {
                Console.WriteLine("Phone Number is a valid input: " + temp);
                return true;
            }
            else
            { Console.WriteLine(temp + "Is not Valid input!!"); }
        }
        return false;
    }