用于财会金额输入的文本框,我设计时将位数控制在了百亿级内,应该足够用了
当然,也可以用try……catch在用户输入完成后进行Double转换,失败报输入格式不正确来节省代码
毕竟下面这么多的代码,根据前辈大佬的说法,在业内是被嫌弃的
/// 阻止非法输入
private void theCode_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
Regex re = new Regex("[^0-9.]+");//正则表达式将输入内容限制为数字和小数点
TextBox temp = sender as TextBox;
string str1 = temp.Text;
int i = 11;
if (str1.Contains("-"))
i = 12;
bool tp = false;
if (str1.Contains("."))
{
str1 = str1.Substring(0, str1.IndexOf('.'));
tp = temp.SelectionStart < str1.IndexOf('.') && str1.Length >= i;
}
else
tp = (!e.Text.Equals(".")) && str1.Length >= i;
e.Handled = (re.IsMatch(e.Text) || temp.SelectedText.Contains(".") || temp.SelectedText.Contains("-") || tp);
}
/// 正负金额变色
private void theCode_TextChanged(object sender, TextChangedEventArgs e)
{
TextBox temp = sender as TextBox;
string str1 = temp.Text;
if (str1.Equals("