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;
}

这只是我的许多验证事件之一:

private void txt_LndLine_Validating(object sender, CancelEventArgs e)
{
    numValidation(txt_LndLine.Text);
    txt_LndLine.Clear();
}

只是真的想知道如何清理代码并最大程度地减少重复。提前致谢 :)

4

2 回答 2

2

如果你有很多常见的东西,声明式验证可以帮助你清理你的代码。

MSDN - 使用自定义验证组件库扩展 Windows 窗体

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

最后但同样重要的是,阅读有关 IDataErrorInfo 的信息。使用此接口,您可以将所有验证算法放在您的业务类中。

它在带有 ErrorProvider 组件和数据绑定的 Winforms 中运行良好

于 2017-06-02T09:15:23.913 回答
0

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

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

        }

实用程序类如下:

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;
    }
于 2017-06-02T09:19:07.360 回答