生成带有以下内容的文本框:
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}?$";
)。或者有任何不同的方式来做到这一点。
答案 0 :(得分:7)
如何使用NumericUpDown
类? (这可能是最简单的。)您可以设置最大值和最小值。您也可以将其设置为INTEGER。
答案 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);
}
}