欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#中winform控制textbox输入只能为数字的方法

程序员文章站 2023-12-13 22:13:52
本文实例讲述了c#中winform控制textbox输入只能为数字的方法。分享给大家供大家参考。具体实现方法如下: 添加keypress事件,控制键盘输入只能是自然数:...

本文实例讲述了c#中winform控制textbox输入只能为数字的方法。分享给大家供大家参考。具体实现方法如下:

添加keypress事件,控制键盘输入只能是自然数:

复制代码 代码如下:

/// <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;
  }
}

希望本文所述对大家的c#程序设计有所帮助。

上一篇:

下一篇: