如何判断textBox里输入的是金额 我在textBox里要输入金额,格式是xx.xx,小数点后必须有两位,如果用户输入的不是数字,便不能显示,如果用户输入的是xx,则自动变成xx.00,如果用户输入的是xx.x则自动变马xx.x0请指点下,谢谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 轉帖:限定文本输入为金额(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<48e.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;这些判断里,对小数点的判断写的不是太好.当用户输入到分的时候,连删除按钮也不能用了.不知哪位看到这段代码来完善一下,呵呵~~ 文章出處:http://jiaocheng.ssxin.com/text_2E/TView_2E26D0B33FC896CF.html 楼上正解代码没仔细看,在输入中只需判断是否是0-9或小数点;对于格式的整理可以放到验证(Validate)事件中去处理,分以后如果还有就进行四舍五入。 但是这个代码有一个问题,一旦用户输完之后再回来想修改的话,BackSpace键就不起作用了.不知道为什么?期待更完美的解答,谢谢了 因为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"; return; } else if (textBox1.Text.IndexOf(".") == 0) { textBox1.Text = "0" + textBox1.Text; } else { int i = textBox1.Text.IndexOf(".") + 3; textBox1.Text = textBox1.Text.Substring(0, i < textBox1.Text.Length ? i : textBox1.Text.Length); } int clen = textBox1.Text.Length; for (int i = 0; i < 3 - (clen - textBox1.Text.IndexOf(".")); i++) { textBox1.Text = textBox1.Text + "0"; } } sql多表删除语句怎么写? 有没有办法在类库项目中建立aspx页面 请问下面这个初始化开始监听的程序怎么一开始就消耗100%的CPU... dataset 对xml访问与操作 c#写一个ftp客户端程序,这么知道上传文件的大小? 如何在listview第二列加图标 很急..一分钟就刷..请大家帮忙... 高手请帮忙!!简单的插值问题 C# winform 窗体打印 怎么用一个循环实现一组button时间,比如说计算器 菜鸟求救阿!winForm的TabPage绑定数据问题 类间变量使用问题
限定文本输入为金额(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<48e.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)事件中去处理
{
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";
return;
}
else if (textBox1.Text.IndexOf(".") == 0)
{
textBox1.Text = "0" + textBox1.Text;
}
else
{
int i = textBox1.Text.IndexOf(".") + 3;
textBox1.Text = textBox1.Text.Substring(0, i < textBox1.Text.Length ? i : textBox1.Text.Length);
}
int clen = textBox1.Text.Length;
for (int i = 0; i < 3 - (clen - textBox1.Text.IndexOf(".")); i++)
{
textBox1.Text = textBox1.Text + "0";
}
}