文本框可以包含字母但不允许使用数字

时间:2015-10-01 13:17:35

标签: c#

我正在尝试创建您可以输入姓名的文本框。 如果文本框为空显示错误。 如果文本框中包含数字显示错误。

在我的示例中,当我有空文本框并且我有像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 = "";
        }
    }
}

4 个答案:

答案 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。你可能想要这样做,所以如果它是基于网络的,你应该做客户端。