C#winform控制textbox输入只能为数字

本文介绍如何通过添加KeyPress事件来控制文本框输入仅限自然数,并利用TextChanged事件过滤非数字字符,确保即使在粘贴操作中也只保留数字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

添加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 }

转载于:https://www.cnblogs.com/makesense/p/3640703.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值