繁体   English   中英

当我按 Backspace 时,C# 向 TextBox 输入一个 ASCII 字符

[英]C# inputs an ASCII character to the TextBox when I press Backspace

我使用了 KeyPress 事件的 e.Handled bool 并让 e.KeyChar 只有 D0-D9、',' 和 Back。 但是随后我的程序开始在 TextBox 中输入一个 ASCII 字符,而不是在我按下 Backspace 时删除最近的字符。 然后我分配;

if(e.KeyChar == (char)Keys.Back) {textBox1.Text = textBox1.Text + "\\b"}

擦除输入的最新字符。 它仍然决定输入一个奇怪的 ASCII 字符而不是擦除任何东西。

如果您只想允许'0'..'9'范围内的字符,同时保持所有其他逻辑不变(例如,如果您选择多个字符然后按“BackSpace”,则只会删除选择,而不是最后一个字符) 您只能处理不需要的字符:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) {
  e.Handled = e.KeyChar >= ' ' && (e.KeyChar < '0' || e.KeyChar > '9');
}

请注意, e.KeyChar >= ' '允许所有命令字符(包括 BS)

这有效:

if (e.KeyChar == (char)Keys.Back)
        {
            textBox1.Text = textBox1.Text.Substring(0, (textBox1.Text.Length - 1));
        }

请尝试使用以下代码。

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar != (char)Keys.Back &&
            (e.KeyChar < (char)Keys.D0 || e.KeyChar > (char)Keys.D9))
        {
            e.Handled = true;
        }
    }

暂无
暂无

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

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