如何生成仅接受数字的文本框?

时间:2012-01-26 10:48:07

标签: c# .net winforms textbox

生成带有以下内容的文本框:

 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。我如何设置生成仅接受数字的texbox? 2。我想只有两个数字(从0到99 string pattern = @"^[0-9]{2}?$";)。或者有任何不同的方式来做到这一点。

4 个答案:

答案 0 :(得分:7)

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

LINK HERE

答案 1 :(得分:5)

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

答案 2 :(得分:3)

是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);

答案 3 :(得分:3)

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);  
        }
    }