C#:在窗体中放了多个文本框,我想要在里面输入数字,但要规定它不能超出范围,若超出范围,那就要提示
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#:在窗体中放了多个文本框,我想要在里面输入数字,但要规定它不能超出范围,若超出范围,那就要提示相关的知识,希望对你有一定的参考价值。
C#:在窗体中放了多个文本框,我想要在里面输入数字,但要规定它不能超出范围,若超出范围,那就要提示“输入错误”。这该怎么做,我不想要在每个文本框的语句里写,可以有一个按钮全部控制吗?还是写一个调用函数?我是新手,可否给个完整代码,如何去做?
你可以用numericUpDown 控件!
或者每个文本框都添加KeyPress 事件,比较多,但每个文本框里面就复制一行语句 InputDecimalDot(sender, 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我。
var patt=@"^[\u4e00-\u9fa5]+$" //这是要匹配的模式
var r=new Regex(patt);
var pasFlag=r.IsMatch(str); //true 标识匹配规定格式,false 不匹配
以上是关于C#:在窗体中放了多个文本框,我想要在里面输入数字,但要规定它不能超出范围,若超出范围,那就要提示的主要内容,如果未能解决你的问题,请参考以下文章
C# Windows 窗体(非 SQL):在新窗体上用整数 +1 填充 DataGridView 行中当前最高数字的文本框