项目中经常看到在输入金额时,会加逗号,最近在复习正则表达式,就联系下,界面如下:
首先,对上面的文本框输入值进行控制,只允许用户输入数字0-9,小数点和退格键,注册文本框的KeyPress事件,代码如下:
1 //输入值只能在数字0-9之间,允许输入小数点和退格键 2 if ((e.KeyChar < '0' || e.KeyChar > '9') && e.KeyChar != 8 && e.KeyChar != 46) 3 { 4 e.Handled = true; 5 } 6 7 //第一位不能是0 8 if (txtMoney.SelectionStart==0&&e.KeyChar=='0') 9 { 10 e.Handled = true; 11 }
我想在光标离开文本框(其不再是窗体上的活动控件时,给用户输入值加逗号,注册Leave事件),代码如下:
1 #region 光标离开时加上逗号 2 string sMsg = txtMoney.Text.Trim(); 3 if (!string.IsNullOrEmpty(sMsg)) 4 { 5 txtMoney.Text = Regex.Replace(sMsg, @"(?<=d)(?=(d{3})+(?!d))", ","); 6 } 7 #endregion
代码中用到了正则表达式中的“环视”。
最后,在移入光标(文本框成为窗体的活动控件时,删除添加的逗号,注册Enter事件),代码如下:
1 #region 光标移入时删除逗号 2 string sMsg = txtMoney.Text.Trim(); 3 if (!string.IsNullOrEmpty(sMsg)) 4 { 5 txtMoney.Text = sMsg.Replace(",", string.Empty); 6 } 7 #endregion
主要是复习下对环视的应用。