如何生成一个只接受数字的文本框

本文关键字:数字 文本 一个 何生成 | 更新日期: 2023-09-27 18:21:33

使用生成文本框

 public void addTextBox(int number)
    {
        for (int i = 0; i < number; i++)
        {
            string name = "tb_" + (i + 1).ToString("00");
            tb = new TextBox();
            tb.Name = name;
            tb.Location = new Point(x, y);
            tb.Width = 20;
            x += 30;
            this.Controls.Add(tb);  
        }
    }

只接受数字的手动文本框:

 private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        const char Delete = (char)8;
        e.Handled = !Char.IsDigit(e.KeyChar) && e.KeyChar != Delete;
    }

我的问题:1。如何设置生成只接受数字的文本框?2。我只想要两个数字(从0到99 string pattern = @"^[0-9]{2}?$";)。或者有什么不同的方法可以做到这一点。

如何生成一个只接受数字的文本框

使用NumericUpDown类如何?(这可能是最简单的。)您可以设置最大值和最小值。您也可以将其设置为仅整数。

链接此处

使用MaskedTextBox并将Mask属性设置为00。

textBox1_KeyPress是处理Texbox输入验证的方法吗?

如果是这样的话-在添加TextBox之前,添加一个事件引用:

tb.KeyPress += new KeyPressEventHandler(textBox1_KeyPress);

UPD:

另一种选择(这是肮脏的方式):

    tb.KeyPress += (sender, e)=>{ 
 const char Delete = (char)8;
        e.Handled = !Char.IsDigit(e.KeyChar) && e.KeyChar != Delete;
    };

在此之前。Controls.Add(tb);

private void Textbox1_KeyPress(object sender, KeyPressEventArgs e)
{
   if (!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), "''d+"))
   e.Handled = true;
}
private void textbox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (char.IsNumber(e.KeyChar))
    {
        if (Regex.IsMatch(txtStockBought.Text, "''D+"))
        {
            e.Handled = true;
        }
    }
    else
    {
        e.Handled = e.KeyChar != (char)Keys.Back;
    }
}

public class NumericTextBox : TextBox
{
    protected override void OnKeyPress(KeyPressEventArgs e)
    {
        if (!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), "''d+"))
        e.Handled = true;
        base.OnKeyPress(e);
    }
}

public void addTextBox(int number)
    {
        for (int i = 0; i < number; i++)
        {
            string name = "tb_" + (i + 1).ToString("00");
            tb = new NumericTextBox();
            tb.Name = name;
            tb.Location = new Point(x, y);
            tb.Width = 20;
            x += 30;
            this.Controls.Add(tb);  
        }
    }