C#:在窗体中放了多个文本框,我想要在里面输入数字,但要规定它不能超出范围,若超出范围,那就要提示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#:在窗体中放了多个文本框,我想要在里面输入数字,但要规定它不能超出范围,若超出范围,那就要提示相关的知识,希望对你有一定的参考价值。

C#:在窗体中放了多个文本框,我想要在里面输入数字,但要规定它不能超出范围,若超出范围,那就要提示“输入错误”。这该怎么做,我不想要在每个文本框的语句里写,可以有一个按钮全部控制吗?还是写一个调用函数?我是新手,可否给个完整代码,如何去做?

你可以用numericUpDown 控件!


或者每个文本框都添加KeyPress 事件,比较多,但每个文本框里面就复制一行语句 InputDecimalDot(sender, e);

//文本框事件 你自己的

  private void txtServiceRate_KeyPress(object sender, KeyPressEventArgs e)
        
          InputDecimalDot(sender, e);
        
        
        
 ///<summary> 
 ///公共调用的方法 
        ///文本框只能输入数字和小数点,并且不能大于等于100
        ///</summary>  
        public void InputDecimalDotAndLessHundred(object sender, System.Windows.Forms.KeyPressEventArgs e)
        
            //检测是否已经输入了小数点
            bool IsContainsDot = ((TextBox)sender).Text.Contains(".");
            int index = ((TextBox)sender).Text.Trim().IndexOf(".");
            string l_strText = ((TextBox)sender).Text;
            double l_dTest = 0;
            if (double.TryParse(l_strText, out l_dTest) && double.Parse(l_strText) >= 100)
            
                MessageBox.Show("不能大于100", "提示信息");
                e.Handled = true;
            

            if ((e.KeyChar < 48 || e.KeyChar > 57) && (e.KeyChar != 8) && (e.KeyChar != 46) && (e.KeyChar != 13))
            
                MessageBox.Show("只能输入数字", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                e.Handled = true;
            
            else if (IsContainsDot && (e.KeyChar == 46))
            
                //如果输入了小数点,并且再次输入
                e.Handled = true;
            
            else if (index == 0)
            
                ((TextBox)sender).Text = "";
            
        

参考技术A 亲,直接把所有的文本框都绑定到一个blur事件就可以了 ,里面判断一下name到底是哪个,指定的范围是多少追问

我刚开始自学,什么都不太懂啊,可否给个代码啊

我刚开始自学,什么都不太懂啊,可否给个代码啊

追答

亲,写了一个小例子,用vs2012写的,你自己看看吧


追问

在哪啊

追答

附件那里不是吗,手机端看不到,要电脑打开这个页面才看得到

本回答被提问者采纳

实现:C#窗体中的文本框只能输入中文汉字,其他输入无效。问:正则表达式怎么用? 分不多,谢谢朋友帮忙!

我一以前没用过正则表达式,再加上天资愚钝,所以试了半天还是没弄出来。。。中文的正则表达式为^[\u4e00-\u9fa5]$,希望路过的朋友留下的你看法,越详细越好。再次谢谢大家!

给窗体的文本框加KeyPress事件(如以下textBox1_KeyPress)
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

Regex rg = new Regex("^[\u4e00-\u9fa5]$");
if (!rg.IsMatch(e.KeyChar.ToString()))

e.Handled = true;



测试过了,只能输入汉字,如果输入别的,没有反应。
以上若还有疑问,可以Hi我。追问

首先非常感谢你!你所说的方法的确实现了文本框只有输入中文汉字才有效,但还是存在一点问题,那就是键盘上的Backspace键也失效了。我百度了并未发现Backspace有正则表达式,不知道这个问题如何处理。再次谢谢你的回答。

追答

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

Regex rg = new Regex("^[\u4e00-\u9fa5]$");
if (!rg.IsMatch(e.KeyChar.ToString()) && e.KeyChar != '\b') //'\b'是退格键

e.Handled = true;


或者
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

Regex rg = new Regex("^[\u4e00-\u9fa5\b]$"); //\b是退格键
if (!rg.IsMatch(e.KeyChar.ToString()))

e.Handled = true;



已经测试通过,以上,若还有疑问,可以Hi我。

参考技术A var str="***" //文本框中的文本
var patt=@"^[\u4e00-\u9fa5]+$" //这是要匹配的模式
var r=new Regex(patt);
var pasFlag=r.IsMatch(str); //true 标识匹配规定格式,false 不匹配

以上是关于C#:在窗体中放了多个文本框,我想要在里面输入数字,但要规定它不能超出范围,若超出范围,那就要提示的主要内容,如果未能解决你的问题,请参考以下文章

C#中Windows窗体工具栏

C# 窗体,里多个控件布局相对居中

c# windows窗体中的文本框

C# 文本框只能输入数字

C# Windows 窗体(非 SQL):在新窗体上用整数 +1 填充 DataGridView 行中当前最高数字的文本框

C#窗体技巧