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");
}

但是,一旦在数字后输入了一个字母,就会出现此消息,并且在单击“确定”时不会出现此消息。它出现大约 4 次,直到消失。

有人可以帮我吗?

谢谢

4

3 回答 3

0

if you want to use Linq and get a count of Items that are invalid in a List do the following

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

you can do a

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

yields 2,3,3,3 in a MessageBox

于 2013-03-19T19:53:30.987 回答
0

问题是你对这个逻辑的放置。如果您希望在用户单击确定/提交按钮时显示消息,您需要在此处执行检查并显示消息。您的示例在每次输入后检查(并因此可能显示错误消息)。

所以你想要类似的东西;

// 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 来实现这些功能

函数 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 回答