public class IntegerTextbox : TextBox
{
protected override void OnKeyPress(KeyPressEventArgs e)
{
e.Handled = !(Char.IsNumber(e.KeyChar) || e.KeyChar == (char)8);
if (!e.Handled) this.Tag = this.Text;//记录最后一次正确输入
base.OnKeyPress(e);
}
protected override void OnTextChanged(EventArgs e)
{
base.OnTextChanged(e);
if (!System.Text.RegularExpressions.Regex.IsMatch((this).Text, @"^(?!0/d)/d*$"))
{
int index = (this).SelectionStart;
(this).Text = (this).Tag as string;
(this).SelectionStart = index;
}
}
public const int WM_PASTE = 0x302;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_PASTE)//粘贴
{
if (!System.Text.RegularExpressions.Regex.IsMatch(Clipboard.GetText(), @"^(?!0/d)/d*$")) return;
}
base.WndProc(ref m);
}
}
如果你允许输入00的情况。可以修改为
public class IntegerTextbox : TextBox
{
protected override void OnKeyPress(KeyPressEventArgs e)
{
e.Handled = !(Char.IsNumber(e.KeyChar) || e.KeyChar == (char)8);
if (!e.Handled) this.Tag = this.Text;//记录最后一次正确输入
base.OnKeyPress(e);
}
protected override void OnTextChanged(EventArgs e)
{
base.OnTextChanged(e);
if (!System.Text.RegularExpressions.Regex.IsMatch((this).Text, @"^/d*$"))
{
int index = (this).SelectionStart;
(this).Text = (this).Tag as string;
(this).SelectionStart = index;
}
}
public const int WM_PASTE = 0x302;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_PASTE)//粘贴
{
if (!System.Text.RegularExpressions.Regex.IsMatch(Clipboard.GetText(), @"^/d*$")) return;
}
base.WndProc(ref m);
}
}
只接受正整数的自定义控件
最新推荐文章于 2018-06-07 16:37:41 发布