我封装好的方法 现在textbox中只能输入浮点数,整数位数、小数位数、正负号可控。如下:
/// <summary>
/// 限制textbox的内容为float类型
/// </summary>
/// <param name="textBox">文本框</param>
/// <param name="intCount">整数个数</param>
/// <param name="decimalCount">小数个数</param>
/// <param name="op">是否允许正负号</param>
public static void CheckFloatOfTextBox(TextBox textBox, int intCount, int decimalCount, bool op)
{
int charCount = textBox.SelectionStart;
CheckFloatOfTextBox(textBox, intCount, decimalCount, op, textBox.SelectionStart, ref charCount);
textBox.SelectionStart = charCount;
}
private static void CheckFloatOfTextBox(TextBox textBox, int intCount, int decimalCount, bool op, int startP, ref int charCount)
{
Regex regex = new Regex(@"^[+-]{0," + (op ? "1" : "0") + @"}([0-9]{1," + intCount + @"}(\.[0-9]{0," + decimalCount + @"}|\.|)$|$)");
int startPosition = startP;
if (startPosition == 0)
return;
if (!regex.IsMatch(textBox.Text))
{
if (textBox.Text.Length > 0)
{
textBox.Text = textBox.Text.Remove(startPosition - 1, 1);
startPosition = startPosition - 1;
charCount--;
}
}
else
startPosition = startPosition - 1;
if (startPosition >= 0)
CheckFloatOfTextBox(textBox, intCount, decimalCount, op, startPosition, ref charCount);
}
温馨提示:答案为网友推荐,仅供参考