C# 实现只能输入数字的文本框

发布时间:2020-02-18编辑:脚本学堂
本文介绍下,用C#实现一个只能输入数字的文本框的代码,有需要的朋友,不妨参考下。

代码:
 

复制代码 代码示例:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)         

    e.Handled = !(Char.IsNumber(e.KeyChar) || e.KeyChar == (char)8 || e.KeyChar == '.'); 
    if (!e.Handled) (sender as TextBox).Tag = (sender as TextBox).Text;//记录最后一次正确输入 

 
private void textBox1_TextChanged(object sender, EventArgs e) 

    if (!System.Text.RegularExpressions.Regex.IsMatch((sender as TextBox).Text, @"^(?!0/d)/d+(/./d*)?$")) 
    { 
        int index = (sender as TextBox).SelectionStart; 
        (sender as TextBox).Text = (sender as TextBox).Tag as string; 
        (sender as TextBox).SelectionStart = index; 
    } 

复制以下代码到项目中,然后编译,从工具栏中拖出这个控件,就可以使用了。
代码:
 

复制代码 代码示例:
public class NumbericTextbox : TextBox 

    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) 
    { 
        base.OnTextChanged(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; 
        } 
    } 
    public const int WM_PASTE = 0x302; 
    protected override void WndProc(ref Message m) 
    { 
        if (m.Msg == WM_PASTE)//粘贴 
        { 
            if (!Regex.IsMatch(Clipboard.GetText(), @"^(?!0/d)/d+(/./d*)?$|")) return; 
        } 
        base.WndProc(ref m); 
    } 

 

说明:
如果不限制整数值,只是要求数字序列,把以上代码中的正则全部替换为:@"^/d+$"即可。

您可能感兴趣的文章:
TextBox限制只能输入数字的方法
c#判断输入内容是否数字的代码
如何让Asp.net TextBox控件只允许输入数字