如何生成一个只接受数字的文本框
本文关键字:数字 文本 一个 何生成 | 更新日期: 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);
}
}