如何在输入数字时显示错误信息?
本文关键字:显示 错误 信息 数字 输入 | 更新日期: 2023-09-27 18:04:39
我已经设置了文本框,以便只能输入字母,我想知道如何在输入字母以外的任何东西时出现错误消息。下面是我的代码:
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次,直到消失。
有谁能帮我一下吗?谢谢
问题在于您对这个逻辑的放置。如果希望在用户单击ok/submit按钮时显示消息,则需要在那里执行检查并显示消息。您的示例是在每次输入后进行检查(因此可能会显示错误消息)。
所以你想要像;
// 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类型,我们进入If,将标志改为false,然后中断,因为不需要继续检查字符串的其余部分。在循环之外,我们执行MessageBox.Show
我更喜欢用javascript来实现这些功能
函数isAlphabet(e) {var keynumvar keycharvar 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事件函数
希望这对你有帮助
如果您想使用Linq并获得列表中无效项的计数执行以下操作
string vStr = FirstNameTextBox.Text;
var isValid = (from tmp in vStr
where char.IsDigit(tmp)
select tmp).ToList();
你可以做一个
ShowMessage(string.Join(",",isValid));
MessageBox中的yields 2,3,3,3