写了一小段程序,用来控制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;
这些判断里,对小数点的判断写的不是太好.当用户输入到分的时候,连删除按钮也不能用了.不知哪位看到这段代码来完善一下,呵呵~~