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

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

写了一小段程序,用来控制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;

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航