1

テキストボックスを文字のみ入力できるように設定していますが、文字以外を入力したときにエラーメッセージを表示させる方法を知りたいです。以下は私のコードです:

private void FirstName_KeyPress_1(object sender, KeyPressEventArgs e)
        {

            if (e.KeyChar < 65 || e.KeyChar > 122)
            {

                e.Handled = true;
            }
        }

        private void FirstName_TextChanged_1(object sender, EventArgs e)
        {

            FirstName.KeyPress += new KeyPressEventHandler(FirstName_KeyPress_1);

        }

私も試してみました

         if (e.KeyChar < 65 || e.KeyChar > 122)
            {

                e.Handled = true;
            }
else 
{
MessageBox.Show (" Please enter a letter",
                            "Error Message");
}

ただし、このメッセージは、数字の後に文字を入力すると表示され、[OK] をクリックしても表示されません。消えるまで4回くらい出ます。

誰でもこれで私を助けてもらえますか?

ありがとうございました

4

3 に答える 3

0

Linqを使用して、リストで無効なアイテムの数を取得する場合は、次の手順を実行します

string vStr = FirstNameTextBox.Text;
var isValid = (from tmp in vStr
               where char.IsDigit(tmp)
               select tmp).ToList();

あなたはすることができます

ShowMessage(string.Join(",",isValid));

yields 2,3,3,3メッセージボックス内

于 2013-03-19T19:53:30.987 に答える
0

問題は、このロジックの配置です。ユーザーが [OK]/[送信] ボタンをクリックしたときにメッセージを表示する場合は、そこでチェックを実行してメッセージを表示する必要があります。あなたの例は、すべての入力後にチェックしています(したがって、エラーメッセージを表示する可能性があります)。

したがって、次のようなものが必要です。

// generate this stub by double clicking the ok/submit button in the GUI builder
private void FirstName_EnterButtonClicked(object sender, EventArgs e)
{
      char[] chars = FirstNameTextBox.Text.ToCharArray();
      bool good = true;
      int placeholder;

      for (int i = 0; i < chars.length; i++)
      {
           if (int.TryParse(chars[i], placeholder)
           {
                good = false;
                break;
           }
      }
      if (!good)
         MessageBox.Show("Names cannot contain numbers."); 
}

コードの簡単な説明 - まず、各文字が追加された後ではなく、検証する前に、ユーザーが完全な入力を送信しようとするまで待機しています。この時点で、入力文字列を文字配列に変換し、それをループします。TryParse入力が整数の場合は true を返し、プレースホルダーの値をその整数に設定します。ユーザーが int を入力した場合、フラグを false に変更すると、残りの文字列をチェックし続ける必要がないため、中断します。ループの外では、MessageBox.Show.

于 2013-03-19T19:40:41.163 に答える
0

これらの種類の機能を実装するためにJavaScriptを使用することを好みます

function isAlphabet(e) { var keynum var keychar var numcheck

    if (e.keyCode >= 91 && e.keyCode <= 96)
        return false;
    keynum = e.keyCode
    keychar = String.fromCharCode(keynum)
    numcheck = /[a-zA-z ]/
    return e.returnValue = numcheck.test(keychar);

}

次の関数は、送信ボタンの Onclientclick イベントを呼び出すことができます。

お役に立てれば :)

于 2013-03-19T19:51:08.527 に答える