zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    Triangle
    Pascal's Triangle II
    Pascal's Triangle
    Populating Next Right Pointers in Each Node II
    Populating Next Right Pointers in Each Node
    [c++]this指针理解
    [oracle]一个最简单的oracle存储过程"proc_helloworld"
    Oracle 的 INSERT ALL和INSERT FIRST
    Linux2.6 内核的 Initrd 机制解析
    /boot/grub/menu.lst详解
  • 原文地址:https://www.cnblogs.com/makesense/p/3640703.html
Copyright © 2011-2022 走看看