C#winform控制textbox输入只能为数字
添加keyPress事件,控制键盘输入只能是自然数:
1 /// <summary> 2 /// 控制键盘输入只能是自然数 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 private void textbox1_KeyPress(object sender, KeyPressEventArgs e) 7 { 8 // 允许输入:数字、退格键(8)、全选(1)、复制(3)、粘贴(22) 9 if (!Char.IsDigit(e.KeyChar) && e.KeyChar != 8 && 10 e.KeyChar != 1 && e.KeyChar != 3 && e.KeyChar != 22) 11 { 12 e.Handled = true; 13 } 14 }
但是这样不能避免粘贴文字里含有非数字字符的情况,可以添加TextChanged事件进行控制:
1 /// <summary> 2 /// 粘贴时过滤不是数字的字符 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 private void textbox1_TextChanged(object sender, EventArgs e) 7 { 8 var reg = new Regex("^[0-9]*$"); 9 var str = textbox1.Text.Trim(); 10 var sb = new StringBuilder(); 11 if (!reg.IsMatch(str)) 12 { 13 for (int i = 0; i < str.Length; i++) 14 { 15 if (reg.IsMatch(str[i].ToString())) 16 { 17 sb.Append(str[i].ToString()); 18 } 19 } 20 textbox1.Text = sb.ToString(); 21 //定义输入焦点在最后一个字符 22 textbox1.SelectionStart = textbox1.Text.Length; 23 } 24 }