限定文本输入为金额(money)类型

写了一小段程序,用来控制textbox的输入数据为money类型,也就是123.45的格式.不过还不是太完善,拿出来共同研究吧.
不说废话了,贴代码
...
this.textbox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textbox1_KeyPress);
...
private void textbox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{   
 if ((e.KeyChar< 48 || e.KeyChar > 57) && e.KeyChar!=8 && e.KeyChar!=32 && e.KeyChar!=46)
 {
  e.Handled = true;
 }
 else if(e.KeyChar==46 && textbox1.Text.IndexOf(".")>=0 )
 {
  e.Handled = true;
 }
 else if(textbox1.Text.IndexOf(".")>=0 && textbox1.Text.Length-textbox1.Text.IndexOf(".")>2)
 {
  e.Handled = true;
 }
 if (e.KeyChar==13)
 {    
  try
  {     
   decimal d =decimal.Parse(textbox1.Text);
   if(double.Parse(d.ToString())<0.02)
   {
    System.Windows.Forms.MessageBox.Show("金额太小","警告",MessageBoxButtons.OK,MessageBoxIcon.Warning);
    return;
   }
   //#.##不足位数的用0补位
   string s=d.ToString("#,##0.00");     
   textbox1.Text=s; 
   System.Windows.Forms.SendKeys.Send("/t");
  }
  catch(System.Exception ex){MessageBox.Show(ex.Message);}
 }
}


其中
 if(e.KeyChar==46 && textbox1.Text.IndexOf(".")>=0 )
{
 e.Handled = true;
}
用于判断用户输入两次以上的"."的情况,

if(textbox1.Text.IndexOf(".")>=0 && textbox1.Text.Length-textbox1.Text.IndexOf(".")>2)
{
 e.Handled = true;
}
用于当用户输入到分以后禁止继续输入的情况

在if (e.KeyChar==13)用户输入回车提交以后
先判断了一次输入金额的大小
decimal d =decimal.Parse(textbox1.Text);
if(double.Parse(d.ToString())<0.02)
然后回显到textbox上
string s=d.ToString("#,##0.00");     
textbox1.Text=s;


这些判断里,对小数点的判断写的不是太好.当用户输入到分的时候,连删除按钮也不能用了.不知哪位看到这段代码来完善一下,呵呵~~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值