如何使布尔语句只允许文本?我有这个代码只允许用户输入数字,但不知道如何做文本。
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);
答案 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)
你可以做一些事情。
char.IsLetter()
答案 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);
}
}