在WPF中我想允许文本框只接受小数点后最多2位的小数点数。例如,330.33有效,333.333无效。文本框应限制所有其他特殊字符。我创建了两个函数,一个用于返回无效字符串,另一个用于将字符串与用户按下的字符进行比较,如果字符串包含无效字符,则删除该字符。我认为这种对字符串中的无效字符进行硬编码并将其与无效键击进行比较的方法是不正确的。有没有更好的方法呢?。
private string GetInvalidstring()
{
string invalidCharacterString = @" ! "" # $ % & ' ( ) * + , - / : ; < = > ? @ A B C D \ | _ ~ ^";
invalidCharacterString += @" E F G H I J K L M N O P Q R S T U V W X Y Z ";
return invalidCharacterString;
}
private string CheckValidEntry(string input)
{
string invalidCharacters = GetInvalidstring();
char[] tocheck = input.ToCharArray();
string copy = input;
foreach (char c in tocheck )
{
if (invalidCharacters.Contains(c))
{
// int i = input.IndexOf(c);
copy = input.Replace(c, ' ');
}
}
return new string(copy.ToList().Where(c => c != ' ' ).ToArray());
}
答案 0 :(得分:2)
答案 1 :(得分:2)
你可以这样做:
private bool IsValid(string input)
{
decimal temp;
return decimal.TryParse(input,out temp) && Math.Round(temp,2)==temp;
}
答案 2 :(得分:0)
使用Math.Round()函数:
Math.Round(value, 2);
如果value = 333.333333,则Math.Round(value,2)返回333.33