C# WINFRM 文本框只能输入数字键、小数点和退格键

小数点只能输入一次、不能出显在第一位... 小数点只能输入一次、不能出显在第一位 展开
 我来答
cactis0906
2013-12-06 · TA获得超过138个赞
知道小有建树答主
回答量:154
采纳率:100%
帮助的人:91.2万
展开全部

1.文本框的话,有个控件叫:NumericUpDown,可以设置小数位,小数位为0的时候显示是整数

2.利用KeyPress事件

 private void Decimal_KeyPress(object sender, KeyPressEventArgs e)//自定义函数
        {
            //验证正整数,小数   
            if (e.KeyChar != 8 && e.KeyChar != 13 && e.KeyChar != 46 && !char.IsNumber(e.KeyChar)) e.Handled = true;
            
            if(e.KeyChar == 46 && this.TextBox.Text.Length==0)
             {        
                 e.Handled = true;    
                 return;
              }      
            int a = 0;
            try
            {
                a = this.TextBox.Text.ToString().Trim().Split('.').Length;
            }
            catch { }
            if (e.KeyChar == 46 && a > 1) e.Handled = true;
        }

这样判断,请尝试,望采纳

fjlhuman
2013-12-06 · TA获得超过122个赞
知道小有建树答主
回答量:290
采纳率:87%
帮助的人:111万
展开全部
为嘛要用文本框啊 用这个控件 numericUpDown 不就解决了 如果你非得用文本框也有办法在文本框的KeyUp事件里做判断 判断用户每个键位 只有是数字的时候才吧值拼接上去,不过这样做比较麻烦
追问
我已经在文本框的keyup事件写好判断了。只是不知道怎么判断第一个数不能为小数点
追答
不好意思看错了 你考虑的优点问题 正常输入应该可以输出.1的这样代表的是0.1  这样如果文本框里面没值 用户还输入点了 你在前面补个零就好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乐天柿子派
2013-12-06 · TA获得超过143个赞
知道小有建树答主
回答量:146
采纳率:0%
帮助的人:76.8万
展开全部
 private void txtMoney_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((e.KeyChar >= 48 && e.KeyChar <= 57) || e.KeyChar==8)
            {
            }
            else if (e.KeyChar == 46 &&this.txtMoney.Text.IndexOf(".")<0)
            {
 
            }
            else
            {
                this.toolTip1.Show("只可输入数值", this.txtMoney,2000);
                e.Handled = true;
            }
        }
追问
还是能输入啊、 进到第二个else if 没有判断。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
巴奕仇问蕊
2020-03-31 · TA获得超过3676个赞
知道小有建树答主
回答量:3056
采纳率:27%
帮助的人:397万
展开全部
1.文本框的话,有个控件叫:NumericUpDown,可以设置小数位,小数位为0的时候显示是整数
2.利用KeyPress事件
123456789101112131415161718 private void Decimal_KeyPress(object sender, KeyPressEventArgs e)//自定义函数 { //验证正整数,小数 if (e.KeyChar != 8 && e.KeyChar != 13 && e.KeyChar != 46 && !char.IsNumber(e.KeyChar)) e.Handled = true; if(e.KeyChar == 46 && this.TextBox.Text.Length==0) { e.Handled = true; return; } int a = 0; try { a = this.TextBox.Text.ToString().Trim().Split('.').Length; } catch { } if (e.KeyChar == 46 && a > 1) e.Handled = true; }
这样判断,请尝试,望采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式