EventArgs e) { var reg = new Regex(“^[0-9]*$”); var str = t

时间:2021-07-08 07:20:24

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

}

}