我正在尝试创建您可以输入姓名的文本框。 如果文本框为空显示错误。 如果文本框中包含数字显示错误。
在我的示例中,当我有空文本框并且我有像Robert1这样的数字时,它确实显示错误。但是当Text以字母结尾时它不起作用。如果你写1Robert,那么它不会显示错误。
我的代码:
string vards = textBox1.Text;
// Empty or wrong format
if (string.IsNullOrWhiteSpace(textBox1.Text))
{
label5.Text = "You didn't enter anything!";
}
else
{
foreach(char c in vards)
{
if (Char.IsNumber(c))
{
label5.Text = "Your name is incorrect!";
}
else
{
label5.Text = "";
}
}
}
答案 0 :(得分:3)
我想我只需要添加休息;
GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
答案 1 :(得分:2)
循环产生无效结果。它会覆盖label5
每个字符label1
的内容,最终结果只是最后一个字符
// Empty or wrong format
if (string.IsNullOrWhiteSpace(textBox1.Text))
{
label5.Text = "You didn't enter anything!";
}
else
{
bool onlyLetters = textBox1.Text.All(x => Char.IsLetter(x));
if (!onlyLetters)
{
label5.Text = "Your name is incorrect!";
}
else
{
label5.Text = "";
}
}
答案 2 :(得分:0)
您正在对文本中的每个字符使用循环。在那里你总是覆盖label5.Text
。所以实际上只有最后一个字符在你的逻辑中很重要。
您可以使用:
bool anyNumbers = textBox1.Text.Any(Char.IsDigit);
if(anyNumbers)
{
label5.Text = "Your name is incorrect!";
}
这里没有LINQ:
bool valid = true;
foreach (char c in textBox1.Text)
{
if (char.IsDigit(c))
{
valid = false;
break;
}
}
答案 3 :(得分:0)
您可以执行以下操作:
var input = txtExample.Text;
if(!string.IsNullOrEmpty(input))
if(input.Any(d => char.IsDigit(d) == false)
{
// Valid
}
你实际上可以使用Linq,甚至不使用foreach
循环。请记住,这是在服务器端完成的,如果您在Web应用程序中触发PostBack
。你可能想要这样做,所以如果它是基于网络的,你应该做客户端。