0

我在 C# winform 中使用了错误提供程序。在我的表单中有文本框。错误提供者检查它是否包含两个数字。这意味着输入是数字,数字的数量是两个数字。当输入为 2 char 时,错误提供程序有效,但当输入为 char 和 digit 时,错误提供程序无效。请检查我的代码。

 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();
            }
        }
4

1 回答 1

1

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

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

相反,您可以为此使用 Linq。Enumerable.All是为此目的而制作的:

bool allDigits = text.All(c => Char.IsDigit(c));

(但也许我完全偏离了轨道,因为问题不太清楚恕我直言)

于 2012-11-14T11:25:13.313 回答