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 }
posted @ 2014-04-02 14:50  天琊蓝  阅读(1352)  评论(1编辑  收藏  举报