C# windowsForm中的textBox 在taxtBox怎么实现只能输入数字1-12已经实现只能输入数字了,但是怎么设置只读1-12 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 判断text是否在 1-12之间啊,正则最好 在TEXTCHANGE中直接判断就可以了 正则+1在textChange中使用正则判断 bool blnResult = Regex.IsMatch("your input", "^([1-9]|1[0-2])$"); 问题看的不是很清楚如果说只能输入区间 [1, 12] 之间的一个整数,那么可以用正则表达式 "^([1-9]|1[0-2])$" 来判断如果是可以输入多个整数的话,可以用正则表达式 "^([1-9]([2-9][1-9]?|1[0-9]?)*)$" 来判断判断的事件可以采用 TextBox 提供的 Validating 事件,在验证失败的情况下可以通过 CancelEventArgs 取消文本框所发生的更改。 bool result=Regex.IsMatch(textbox1.Text.Trim(),"^0*([1-9]|1[012])$"); private void txtMonth_Validating(object sender, CancelEventArgs e) { bool blnResult = Regex.IsMatch(txtMonth.Text.Trim(), "^([1-9]|1[0-2])$"); CancelEventArgs.Empty.ToString(); }是这样吗?怎么还是不行呀。 Quote: 引用 8 楼 njw1028 的回复: private void txtMonth_TextChanged(object sender, EventArgs e) { if (!System.Text.RegularExpressions.Regex.IsMatch(txtMonth.Text, @"^\d*$")) txtMonth.Undo(); bool blnResult = Regex.IsMatch(txtMonth.Text.Trim(), "^([1-9]|1[0-12])$"); }这么写可以吗? if(Regex.IsMatch(txtMonth.Text.Trim(), "^([1-9]|1[0-12])$")){ //dosomething}else{ //dosomething} private bool notInput = false; private void txt_KeyDown(object sender, KeyEventArgs e) { notInput = false; // Determine whether the keystroke is a number from the top of the keyboard. if (e.KeyCode >= Keys.D0 && e.KeyCode <= Keys.D9) { Char inputChar = (Char)e.KeyValue; String strInput = this.txtThreadCount.Text + inputChar; bool blnResult = Regex.IsMatch(strInput, "^([1-9]|1[0-2])$"); if (blnResult == false) { notInput = true; } } } private void txt_KeyPress(object sender, KeyPressEventArgs e) { if (notInput == true) { e.Handled = true; } } 不可以指的是什么,blnResult 的结果不正确,还是说文本框里的内容没取消更改?CancelEventArgs 那句不明白 lz 是想做什么,如果是想取消更改,应该是 e.Cancel = true 才对。 Validating 是 TextBox 控件的一个验证事件,你查下开发文档就知道了。里面那个正则表达式是验证文本框的文本格式。这些内容多查下文档就都知道了。 多线程下载 超时处理问题 来者有分 如果别人攻击我 我如何获得他的IP地址记起其他信息 关于OLEDBDATAREADER或SQLDATAREADER的问题 为什么在struct类型的变量中,有些属性的访问器会失灵? 水晶报表显示问题 怎么做出类似WINDOWS优化大师那种菜单的效果??? 用VISIO绘制类图如何表示枚举 如何用asp.net实现这个? C#中固定Form大小的属性是什么?在线等马上给分! ASP.NET回发后执行javascript代码 像这种网页文本框怎样填表? 问一个关于try catch finally的问题
如果说只能输入区间 [1, 12] 之间的一个整数,那么可以用正则表达式 "^([1-9]|1[0-2])$" 来判断
如果是可以输入多个整数的话,可以用正则表达式 "^([1-9]([2-9][1-9]?|1[0-9]?)*)$" 来判断判断的事件可以采用 TextBox 提供的 Validating 事件,在验证失败的情况下可以通过 CancelEventArgs 取消文本框所发生的更改。
private void txtMonth_Validating(object sender, CancelEventArgs e)
{
bool blnResult = Regex.IsMatch(txtMonth.Text.Trim(), "^([1-9]|1[0-2])$");
CancelEventArgs.Empty.ToString(); }
是这样吗?怎么还是不行呀。
{
//dosomething
}
else
{
//dosomething
}
{
notInput = false; // Determine whether the keystroke is a number from the top of the keyboard.
if (e.KeyCode >= Keys.D0 && e.KeyCode <= Keys.D9)
{
Char inputChar = (Char)e.KeyValue;
String strInput = this.txtThreadCount.Text + inputChar;
bool blnResult = Regex.IsMatch(strInput, "^([1-9]|1[0-2])$");
if (blnResult == false)
{
notInput = true;
}
} } private void txt_KeyPress(object sender, KeyPressEventArgs e)
{
if (notInput == true)
{
e.Handled = true;
} }
不可以指的是什么,blnResult 的结果不正确,还是说文本框里的内容没取消更改?CancelEventArgs 那句不明白 lz 是想做什么,如果是想取消更改,应该是 e.Cancel = true 才对。
Validating 是 TextBox 控件的一个验证事件,你查下开发文档就知道了。
里面那个正则表达式是验证文本框的文本格式。这些内容多查下文档就都知道了。