![](/img/trans.png)
[英]Allow only {'delete' , 'backspace' , one '.' , '-' , numbers '0 to 9'} on a textbox C#/winforms
[英]Allow only decimal numbers in textbox in C#
我是 C# 新手,我想知道如何制作只接受数字的文本框。 因此,如果您输入一个十进制数,那将没有问题,但是当您输入其他内容时,然后“0,1,2,3,4,5,6,7,8,9 或”,我希望将其删除文本框。 我认为使用 KeyDown 或 TextChanged 是可能的。
这是我已经尝试过的:
private void txt2011_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
if (!System.Text.RegularExpressions.Regex.IsMatch("^[0-9]", txt2011.Text))
{
txt2011.Text = "0";
}
}
提前致谢
虽然NumericUpDown
是一个不错的选择,但你毕竟想要一个文本框,对吧?
这是一个通用指南。 首先你需要订阅文本框的TextChanged
事件。 这可以通过双击设计器中的文本框来完成。 当事件发生时,您想要检查文本框的文本。 如果它是空字符串,则返回。 现在您可以尝试将文本转换为双精度。 如果无法转换,请将文本设置为原始文本。
您可能希望在类中的某处有一个originalText
变量。 如果成功转换为double,则将原始文本设置为文本。
try {
Convert.ToDouble(textbox1.Text);
} catch (NumberFormatException) {
textbox1.Text = originalText;
return;
}
originalText = textbox1.Text;
现在它应该可以工作了!
一旦您开始在 TextBox 中书写, KeyDown
和Text Changed
事件就会触发。 在这种情况下,您甚至不会看到您输入的文本,因为只要文本框内的文本发生更改,相应的操作就会发生。
最好使用LostFocus
事件,因为它只会在用户离开该文本框时触发,然后您可以突出显示它并将文本替换为 0。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.