0

私はC#winformのエラープロバイダーから使用しました。私のフォームにはテキストボックスがあります。エラープロバイダーは、2つの番号が含まれていることを確認しました。これは、入力が桁で、桁数が2桁であることを意味します。入力が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();
            }
        }
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 に答える