一、限制输入为数字
当用户按下某个按键时,会触发
keyPress
事件,在该事件里对输出的字符进行判断
首先添加事件:
//限制输入数字
private void LimitInputNumber(object sender, KeyPressEventArgs e)
{
if(!char.IsNumber(e.KeyChar) && e.KeyChar!=(char)8)
{
e.Handled = true;
}
}
这里事件有两个参数object sender
和KeyPressEventArgs e
,
sender
可以理解为发送这个事件的源对象,比如我有TextBox1
和TextBox2
两个控件,当我在第一个控件中输入时,sender
就是TextBox1
,在第二个控件输入时,sender
就是TexeBox2
。
在使用时要转换一下:
TextBox tb = sender as TextBox;
e可以理解为这个事件带的消息。查看代码发现这个参数只有两个属性:
// 摘要:
// 获取或设置与按下的键对应的字符。
//
// 返回结果:
// 撰写的 ASCII 字符。 例如,如果用户按下 Shift + K,则该属性返回一个大写的 K。
public char KeyChar { get; set; }
//
// 摘要:
// 获取或设置一个值,该值指示是否 System.Windows.Forms.Control.KeyPress 事件进行处理。
//
// 返回结果:
// true 如果处理该事件;否则为 false。
public bool Handled { get; set; }
所以只要判断
keychar
输入的字符是否是数字,不是的话将Handled
设为true
即可,该事件到此为止,不会继续向下层传递。
二、限制输入大小
大部分时候对数字输入的范围有限制,一种超过限制值不允许输入,另一种是允许输入,失去焦点时自动变为最大/最小值。
这里提供一种方法,当检测到文本框为空时,自动填充最小值。
用到的是控件的Leave
事件
private void LimitInputNumber(object sender, EventArgs e)
{
TextBox tb = sender as TextBox;
if(tb.Text == "")
{
tb.Text = "0";
}
}