110,534
社区成员
发帖
与我相关
我的任务
分享
public class NumberTextbox : TextBox
{
public int Min { get; set; }
public int Max { get; set; }
public NumberTextbox()
{
Min = 0;
Max = int.MaxValue;
}
protected override void OnKeyPress(KeyPressEventArgs e)
{
e.Handled = !(Char.IsNumber(e.KeyChar) || e.KeyChar == (char)8 || e.KeyChar == '.');
if (!e.Handled) this.Tag = this.Text;//记录最后一次正确输入
base.OnKeyPress(e);
}
protected override void OnTextChanged(EventArgs e)
{
if (!System.Text.RegularExpressions.Regex.IsMatch(this.Text, @"^(?!0\d)\d+(\.\d*)?$"))
{
int index = this.SelectionStart;
this.Text = this.Tag as string;
this.SelectionStart = index;
}
else if (int.Parse(this.Text) > Max || int.Parse(this.Text) < Min)
{
int index = this.SelectionStart;
this.Text = this.Tag as string;
this.SelectionStart = index;
}
base.OnTextChanged(e);
}
}
base.OnKeyPress(e);
base.OnKeyDown(e);
//限制TextBox只能输入数字
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyCode<Keys.NumPad0 ||e.KeyCode>Keys.NumPad9)
{
if(e.KeyCode<Keys.D0||e.KeyCode>Keys.D9)
{
e.Handled = true;
base.OnKeyPress(e);
}
}
}