允许用户只输入文字?

时间:2010-05-16 15:53:44

标签: c#

如何使布尔语句只允许文本?我有这个代码只允许用户输入数字,但不知道如何做文本。

 bool Dest = double.TryParse(this.xTripDestinationTextBox.Text, out Miles);
 bool MilesGal = double.TryParse(this.xTripMpgTextBox.Text, out Mpg);
 bool PriceGal = double.TryParse(this.xTripPricepgTextBox.Text, out Price);

5 个答案:

答案 0 :(得分:4)

更新:看你的评论我建议你阅读这篇文章:

User Input Validation in Windows Forms


原始答案:至少在使用.NET 3.5时,最简单的方法是使用LINQ:

bool isAllLetters = s.All(c => char.IsLetter(c));

在较旧的.NET版本中,您可以创建一个方法来为您执行此操作:

bool isAllLetters(string s)
{
    foreach (char c in s)
    {
        if (!char.IsLetter(c))
        {
            return false;
        }
    }
    return true;
}

您还可以使用正则表达式。如果要允许Unicode中定义的任何字母,则可以使用此正则表达式:

bool isOnlyLetters = Regex.IsMatch(s, @"^\p{L}+$");

如果您想限制为A-Z,那么您可以使用:

bool isOnlyLetters = Regex.IsMatch(s, @"^[a-zA-Z]+$");

答案 1 :(得分:0)

您可以使用正则表达式,在此处浏览:http://regexlib.com/

答案 2 :(得分:0)

你可以做一些事情。

  1. 用户正则表达式,用于检查字符串是否与“文本”概念匹配
  2. 编写一些代码,根据有效字符列表检查每个字符。甚至可以使用char.IsLetter()
  3. 使用MaskedTextBox并设置自定义蒙版以限制输入为仅文本字符

答案 3 :(得分:0)

您可以在KeyPress事件中使用以下代码:

if (!char.IsLetter(e.KeyChar)) {
e.Handled = true;
}

答案 4 :(得分:0)

我发现连接到文本框的文本更改事件并接受/拒绝更改是可接受的解决方案。 “仅允许文本”是一个相当模糊的定义,但您也可以检查新添加的文本(下一个字符)是否为数字,并简单地拒绝所有数字/不允许的字符。这将使用户感觉他们只能输入字符和特殊字符(如点,问号等)。

private void UTextBox_TextChanged(object sender, EventArgs e)
{
    string lastCharacter = this.Text[this.Text.Length-1].ToString();
    MatchCollection matches = Regex.Matches(lastCharacter, "[0-9]", RegexOptions.None);
    if (matches.Count > 0) //character is a number, reject it.
    {
         this.Text = Text.Substring(0, Text.Length-1);
    }
 }