如何判断textBox里输入的是金额
我在textBox里要输入金额,格式是xx.xx,小数点后必须有两位,如果用户输入的不是数字,便不能显示,如果用户输入的是xx,则自动变成xx.00,如果用户输入的是xx.x则自动变马xx.x0
请指点下,谢谢了
------解决方案--------------------轉帖:
限定文本输入为金额(money)类型
写了一小段程序,用来控制textbox的输入数据为money类型,也就是123.45的格式.不过还不是太完善,拿出来共同研究吧.
不说废话了,贴代码
...
this.textbox1.KeyPress+=newSystem.Windows.Forms.KeyPressEventHandler(this.textbox1_KeyPress);
...
privatevoidtextbox1_KeyPress(objectsender,System.Windows.Forms.KeyPressEventArgse)
{
if((e.KeyChar <48
e.KeyChar> 57)&&e.KeyChar!=8&&e.KeyChar!=32&&e.KeyChar!=46)
{
e.Handled=true;
}
elseif(e.KeyChar==46&&textbox1.Text.IndexOf( ". ")> =0)
{
e.Handled=true;
}
elseif(textbox1.Text.IndexOf( ". ")> =0&&textbox1.Text.Length-textbox1.Text.IndexOf( ". ")> 2)
{
e.Handled=true;
}
if(e.KeyChar==13)
{
try
{
decimald=decimal.Parse(textbox1.Text);
if(double.Parse(d.ToString()) <0.02)
{
System.Windows.Forms.MessageBox.Show( "金额太小 ", "警告 ",MessageBoxButtons.OK,MessageBoxIcon.Warning);
return;
}
//#.##不足位数的用0补位
strings=d.ToString( "#,##0.00 ");
textbox1.Text=s;
System.Windows.Forms.SendKeys.Send( "\t ");
}
catch(
System.Exceptionex){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)用户输入回车提交以后
先判断了一次输入金额的大小
decimald=decimal.Parse(textbox1.Text);
if(double.Parse(d.ToString()) <0.02)
然后回显到textbox上
strings=d.ToString( "#,##0.00 ");
textbox1.Text=s;
这些判断里,对小数点的判断写的不是太好.当用户输入到分的时候,连删除按钮也不能用了.不知哪位看到这段代码来完善一下,呵呵~~
------解决方案--------------------因为
elseif(textbox1.Text.IndexOf( ". ")> =0&&textbox1.Text.Length-textbox1.Text.IndexOf( ". ")> 2)
{
e.Handled=true;
}
把这一判断删去,将格式的整理放到验证(Validate)事件中去处理
------解决方案--------------------private void textBox1_KeyPress (object sender, KeyPressEventArgs e)
{
if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != 46)
{
e.Handled = true;
}
else if (e.KeyChar == 46 && textBox1.Text.IndexOf( ". ") > = 0)
{
e.Handled = true;
}
else if (e.KeyChar==13)
{
textBox1_Validating(sender, new CancelEventArgs());
}
}
private void textBox1_Validating (object sender, CancelEventArgs e)
{
if (textBox1.Text.IndexOf( ". ") == -1)
{
textBox1.Text = textBox1.Text + ".00 ";