C# 错误提供程序检查了输入文本框的位数

C# 错误提供程序检查了输入文本框的位数,c#,winforms,validation,C#,Winforms,Validation,我使用了C#winform中的错误提供程序。在我的表格中有文本框。错误提供程序检查它是否包含两个数字。这意味着输入是数字,数字的数量是两个数字。当输入为2字符时,错误提供程序工作,但当输入为字符和数字时,错误提供程序不工作。 请检查我的密码 private void textbox1_Leave(object sender, EventArgs e) { string text = textbox1.Text; bool hasD

我使用了C#winform中的错误提供程序。在我的表格中有文本框。错误提供程序检查它是否包含两个数字。这意味着输入是数字,数字的数量是两个数字。当输入为2字符时,错误提供程序工作,但当输入为字符和数字时,错误提供程序不工作。 请检查我的密码

 private void textbox1_Leave(object sender, EventArgs e)
        {
            string text = textbox1.Text;
            bool hasDigit = false;

                foreach (char letter in text)
                {
                    if (char.IsDigit(letter))
                    {
                        hasDigit = true;
                        break;
                    }
                }

            // Call SetError or Clear on the ErrorProvider.
            if (!hasDigit )
            {
                errorProvider1.SetError(textbox1, "Please enter digit");
            }
            else if(hasDigit) 

            {

                if (text.TextLength != 2)
                {
                    errorProvider1.SetError(textbox1, "Number of digit is two number");
                }
                else
                errorProvider1.Clear();
            }
        }

所以您要确保所有字符都是数字。但你只检查了第一个,如果这是一个数字,你就打破了循环:

foreach (char letter in text)
{
    if (char.IsDigit(letter))
    {
        hasDigit = true;
        break;
    }
}
相反,您可以使用Linq来实现这一点<代码>可枚举。所有都是为此目的而制定的:

bool allDigits = text.All(c => Char.IsDigit(c));
(但也许我完全偏离了正轨,因为问题不太清楚,imho)