只在文本框中输入特定的字符

本文关键字:字符 输入 文本 | 更新日期: 2023-09-27 18:05:16

我想在文本框中输入2十进制数。我正在使用下面的代码,这是我在互联网上找到的文本框的按键事件。

       if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
        {
            e.Handled = true;
        }
        // only allow two decimal point
        if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -2))
        {
            e.Handled = true;
        }


在上面的代码首先,如果条件id工作良好,我只能输入数字。但是第二部分只限制了2位小数,这就行不通了。请告诉我这段代码有什么问题。
谢谢你。

只在文本框中输入特定的字符

永远不要使用KeyPress进行此类验证。对于一些棘手的版本,你总是会遇到问题,比如替换选定的文本,从剪贴板粘贴一些东西,等等。

使用Validating事件代替,或者在用户单击OK按钮或其他按钮时进行一些自定义验证。在这些情况下,您可以假设用户已经完成了版本,并且始终可以验证最终文本。

如果用户必须输入一些严格长度的文本,您可以使用MaskedTextBox代替。