在C#中只允许文本框中的十进制数字

时间:2015-09-24 09:20:54

标签: c# numbers decimal

我是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";
        }
    }

提前致谢

2 个答案:

答案 0 :(得分:0)

虽然NumericUpDown是一个不错的选择,但毕竟你想要一个文本框,对吗?

这是一般指南。首先,您需要订阅文本框的TextChanged事件。这可以通过双击设计器中的文本框来完成。事件发生时,您需要检查文本框的文本。如果是空字符串,只需返回。现在您可以尝试将文本转换为double。如果无法转换,请将文本设置为原始文本。

您可能希望在班级的某个地方有一个originalText变量。如果它成功转换为double,请将原始文本设置为文本。

try {
    Convert.ToDouble(textbox1.Text);
} catch (NumberFormatException) {
    textbox1.Text = originalText;
    return;
}
originalText = textbox1.Text;

现在应该可以了!

答案 1 :(得分:0)

一旦开始在TextBox中编写,

KeyDownText Changed事件就会触发。在这种情况下,您甚至不会看到您键入的文本,因为只要在文本框中更改了文本,就会发生相应的操作。

最好使用LostFocus事件,因为它只会在用户离开该文本框时触发,然后您可以突出显示它并将文本替换为0。