C# 如何生成只接受数字的文本框?
使用以下内容生成文本框:C# 如何生成只接受数字的文本框?,c#,.net,winforms,textbox,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
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);
}
}
我的问题:1。如何设置生成只接受数字的文本框?
2。我只想要两个数字(从0-99
string pattern=@“^[0-9]{2}?$”;
)。或者有什么不同的方法可以做到这一点。使用NumericUpDown
类怎么样?(这可能是最简单的。)您可以设置最大值和最小值。也可以将其设置为“仅整数”
使用
MaskedTextBox
并将Mask
属性设置为00。textBox1\u键是否是处理Texbox输入验证的方法
如果是-在添加文本框之前,添加事件参照:
tb.KeyPress += new KeyPressEventHandler(textBox1_KeyPress);
UPD:
另一个选项(这是肮脏的方式):
在this.Controls.Add(tb)之前 private void Textbox1\u按键(对象发送器,按键事件参数e)
{
if(!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(),“\\d+”)
e、 已处理=正确;
}
私有无效文本框1\u按键(对象发送器,按键事件参数e)
{
if(char.IsNumber(e.KeyChar))
{
if(Regex.IsMatch(txtstockbunded.Text,“\\D+”)
{
e、 已处理=正确;
}
}
其他的
{
e、 已处理=e.KeyChar!=(char)Keys.Back;
}
}
公共类NumericTextBox:TextBox
{
按键时受保护的覆盖无效(按键事件参数e)
{
if(!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(),“\\d+”)
e、 已处理=正确;
按键(e);
}
}
公共无效添加文本框(整数)
{
for(int i=0;i
这是最好的选择。现在Winforms与WPF相比几乎是唯一的优势。这是一种痛苦的方式,我们在WPF中这样做是因为没有其他选择。textBox1_KeyPress仅适用于textBox1(这是唯一的考试)。生成的tb未连接到按键。如何将按键添加到tb?@Janolmayti是的,有。您只需使用lmbda表达式:@Janolmayti我已经编辑了答案,添加了lambda表达式示例。@Janolmayti喜欢:if(Regex.IsMatch(((TextBox)sender.Text,@“^[0-9]{2}?$”
Cool!这对第二个问题有效。谢谢仍然想知道问题1创建用户控件拖放文本框并为kep press创建文本框事件处理程序并将其放入表单中…这将在表单中创建自定义文本框…@StackOverflovUser尝试您的方法,但当我添加@“^[0-9]{2}?”时
我无法在文本框中插入任何内容。我强烈建议您首先开始学习正则表达式。@StackOverflovUser呵呵,我会的!
tb.KeyPress += new KeyPressEventHandler(textBox1_KeyPress);
tb.KeyPress += (sender, e)=>{
const char Delete = (char)8;
e.Handled = !Char.IsDigit(e.KeyChar) && e.KeyChar != Delete;
};
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);
}
}