Winform 限制TextBox输入类型
textBoxKeyPress事件
1、

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

浙公网安备 33010602011771号