本文實(shí)例講述了C#中winform控制textbox輸入只能為數(shù)字的方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:
添加keyPress事件,控制鍵盤輸入只能是自然數(shù):
/// <summary>
/// 控制鍵盤輸入只能是自然數(shù)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void textbox1_KeyPress(object sender, KeyPressEventArgs e)
{
  // 允許輸入:數(shù)字、退格鍵(8)、全選(1)、復(fù)制(3)、粘貼(22)
  if (!Char.IsDigit(e.KeyChar) && e.KeyChar != 8 &&
  e.KeyChar != 1 && e.KeyChar != 3 && e.KeyChar != 22)
  {
    e.Handled = true;
  }
}
但是這樣不能避免粘貼文字里含有非數(shù)字字符的情況,可以添加TextChanged事件進(jìn)行控制:
/// <summary>
/// 粘貼時(shí)過(guò)濾不是數(shù)字的字符
/// </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();
    //定義輸入焦點(diǎn)在最后一個(gè)字符
    textbox1.SelectionStart = textbox1.Text.Length;
  }
}
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。