我是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";
}
}
提前致谢
答案 0 :(得分:0)
虽然NumericUpDown
是一个不错的选择,但毕竟你想要一个文本框,对吗?
这是一般指南。首先,您需要订阅文本框的TextChanged
事件。这可以通过双击设计器中的文本框来完成。事件发生时,您需要检查文本框的文本。如果是空字符串,只需返回。现在您可以尝试将文本转换为double。如果无法转换,请将文本设置为原始文本。
您可能希望在班级的某个地方有一个originalText
变量。如果它成功转换为double,请将原始文本设置为文本。
try {
Convert.ToDouble(textbox1.Text);
} catch (NumberFormatException) {
textbox1.Text = originalText;
return;
}
originalText = textbox1.Text;
现在应该可以了!
答案 1 :(得分:0)
KeyDown
和Text Changed
事件就会触发。在这种情况下,您甚至不会看到您键入的文本,因为只要在文本框中更改了文本,就会发生相应的操作。
最好使用LostFocus
事件,因为它只会在用户离开该文本框时触发,然后您可以突出显示它并将文本替换为0。