C# 在C语言中最小化验证编码#

C# 在C语言中最小化验证编码#,c#,.net,validation,design-patterns,reusability,C#,.net,Validation,Design Patterns,Reusability,我正在尝试验证winform应用程序中的一组文本框 if(string.IsNullOrEmpty(txtCarbohydrate.Text){ //todo } 但我的表单中有几个文本框需要验证是否为空,不仅在当前的win表单中,在其他表单中也是如此。如何创建一个可以验证多个文本框和 可以跨应用程序重用吗 编辑:我写了这样的东西,有什么建议可以改进吗 class ValidateEmpty { bool res = false;

我正在尝试验证winform应用程序中的一组文本框

if(string.IsNullOrEmpty(txtCarbohydrate.Text){

            //todo
        }
但我的表单中有几个文本框需要验证是否为空,不仅在当前的win表单中,在其他表单中也是如此。如何创建一个可以验证多个文本框和 可以跨应用程序重用吗

编辑:我写了这样的东西,有什么建议可以改进吗

  class ValidateEmpty
  {
    bool res = false;
    //List<object> txt = new List<object>();
    List<string> st = new List<string>();

    public List<string> St
    {
        get { return st; }
        set { st = value; }
    }

    public ValidateEmpty(List<string> _str)
    {
        this.st = _str;
    }      

    public bool checkEmpty()
    {
        bool res = false;
        for (int i = 0; i < St.Count(); i++ )
        {
            if(string.IsNullOrEmpty(St[i]))
            {
                res= true;                   
            }
        }
            return res;
    }
}
class ValidateEmpty
{
bool res=假;
//List txt=新列表();
List st=新列表();
公共列表街
{
获取{return st;}
设置{st=value;}
}
公共验证空(列表_str)
{
this.st=\u str;
}      
公共bool checkEmpty()
{
bool res=假;
对于(int i=0;i
}
`

您可以将它们放在一个列表中,然后在列表中循环

List<TextBox> TextBoxes=new List<TextBox>() {txtCarbohydrate, txtProtein, txtFat};

foreach(TextBox tb in TextBoxes)
{
    if(String.IsNullOrEmpty(tb.Text)
    {
        //do something
    }
}
List textboxs=new List(){txtProtein,txtFat};
foreach(文本框中的文本框tb)
{
if(String.IsNullOrEmpty(tb.Text)
{
//做点什么
}
}
根据您的编辑,您希望返回一个布尔值(很难理解您的代码和您要完成的任务,您需要清晰简洁!)来指示文本框是否为空。下面是如何创建一个方法来完成此操作

public static bool IsThereAnEmptyTextBox(List<TextBox> textBoxes)
{
    bool emptyfound=false;
    foreach(TextBox tb in textboxes)
    {
        if(String.IsNullOrEmpty(tb.Text)
        {
            emptyfound=true;
        }   
    }
    return emptyfound;
}
公共静态bool IsThere空文本框(列出文本框)
{
bool emptyfound=false;
foreach(文本框中的文本框tb)
{
if(String.IsNullOrEmpty(tb.Text)
{
emptyfound=true;
}   
}
返回空查找;
}
你可以从任何类调用这个函数,如果你把这个函数放在一个实用类或基类中,等等。如果你想把它和paqogomez的答案结合起来,你可以从这样的形式调用它

bool emptyfound=MyUtilities.IsThereAnEmptyTextBox(myForm.Controls.OfType<TextBox>().ToList());
bool emptyfound=MyUtilities.IsThereAnEmptyTextBox(myForm.Controls.OfType().ToList());

我认为这是一种很糟糕的方式,但我想展示一下你如何做到你所要求的。

你可以把它们放在一个列表中,然后在列表中循环

List<TextBox> TextBoxes=new List<TextBox>() {txtCarbohydrate, txtProtein, txtFat};

foreach(TextBox tb in TextBoxes)
{
    if(String.IsNullOrEmpty(tb.Text)
    {
        //do something
    }
}
List textboxs=new List(){txtProtein,txtFat};
foreach(文本框中的文本框tb)
{
if(String.IsNullOrEmpty(tb.Text)
{
//做点什么
}
}
根据您的编辑,您希望返回一个布尔值(很难理解您的代码和您要完成的任务,您需要清晰简洁!)来指示文本框是否为空。下面是如何创建一个方法来完成此操作

public static bool IsThereAnEmptyTextBox(List<TextBox> textBoxes)
{
    bool emptyfound=false;
    foreach(TextBox tb in textboxes)
    {
        if(String.IsNullOrEmpty(tb.Text)
        {
            emptyfound=true;
        }   
    }
    return emptyfound;
}
公共静态bool IsThere空文本框(列出文本框)
{
bool emptyfound=false;
foreach(文本框中的文本框tb)
{
if(String.IsNullOrEmpty(tb.Text)
{
emptyfound=true;
}   
}
返回空查找;
}
你可以从任何类调用这个函数,如果你把这个函数放在一个实用类或基类中,等等。如果你想把它和paqogomez的答案结合起来,你可以从这样的形式调用它

bool emptyfound=MyUtilities.IsThereAnEmptyTextBox(myForm.Controls.OfType<TextBox>().ToList());
bool emptyfound=MyUtilities.IsThereAnEmptyTextBox(myForm.Controls.OfType().ToList());

我认为这是一种糟糕的方式,但我正试图演示如何实现您的要求。

在一个表单中获取所有文本框

var controls=myForm.controls.OfType();
foreach(控件中的文本框tb)
{
//验证
}

根据您正在执行的验证类型,您还可以按照@RandRandom的建议执行,并在文本框上添加所需的属性。这将强制用户在提交文本之前输入文本。

要在一个表单中获取所有文本框,请使用

var controls=myForm.controls.OfType();
foreach(控件中的文本框tb)
{
//验证
}


根据您所做的验证类型,您也可以按“RANDRORADION建议”将所需的属性放在文本框上。这将迫使用户在提交之前插入文本。

使用所需的属性。请注意,可以<代码>返回true; >在代码的中间>检查空()。< /代码>循环;一旦建立了至少一个框是空的,不需要继续检查。请使用必需的属性。注意,可以<代码>返回true;<代码> >在<代码>检查空格()中。
loop;一旦确定至少有一个框是空的,就不需要继续检查了。谢谢,但是如果我想重用它,我应该把它放在calss中吗?@iatrochemit把它放在类中是没有意义的。但是,也许是基类。基类可以有一个“ValidateTextBox”方法。然后所有需要该方法的表单都可以从中继承。这是您所说的类吗?请参见编辑。@iatrochemit,请参见我的编辑以了解类型的
。这是一个更好的解决方案,谢谢默认设置。@iatrochemit将其作为基类。
公共类验证空:表单
,然后在您的m
公共类MyForm:ValidateEmpty
谢谢,但是如果我想重用它,我应该把它放在calss中吗?@iatrochemit把它放在类中真的没有意义。但是,也许是基类。基类可以有一个“ValidateTextBox”方法。然后所有需要该方法的表单都可以从中继承。这是您所说的类吗?请参见编辑。@iatrochemit,请参见我的编辑以了解类型
。这是一个更好的解决方案,谢谢默认设置。@iatrochemit将其作为基类。
公共类验证空:表单
,然后在您的m
公共类MyForm:ValidateEmpty
谢谢,但是如果我想在其他形式中继续使用这些代码呢?很难说不看你想如何重用它。我想要一个可以接受任意数量文本框并选中