繁体   English   中英

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

[英]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 中书写, KeyDownText Changed事件就会触发。 在这种情况下,您甚至不会看到您输入的文本,因为只要文本框内的文本发生更改,相应的操作就会发生。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM