如何在KeyPress事件中确定是否按下了退格键?

10

这个:

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keypress.aspx

...表明我应该在KeyPress事件中访问e.KeyCode,但似乎我没有。我正在尝试仅允许1、2、3和退格键:

private void textBoxQH1_KeyPress(object sender, KeyPressEventArgs e) {
  if ((e.KeyChar != '1') &&
      (e.KeyChar != '2') &&
      (e.KeyChar != '3') &&
      (e.KeyChar != (Keys.Back))) {
    e.Handled = true; 
  }
}

但是“e.”并没有像示例中显示的那样显示“KeyCode”值,并且尝试使用Keys.Back的KeyChar会导致我收到“运算符'!='不能应用于类型为'char'和'System.Windows.Forms.Keys'的操作数”的指责。

那么我该如何实现呢?


1
c#?嗯,我不确定,但可能是:(e.KeyChar != (char)8) - Gustavo Vargas
3个回答

24

尝试比较e.KeyChar != (char)Keys.Back,你应该将其强制转换为char类型,因为Keys是一个枚举类型

请参阅:KeyPressEventArgs.KeyChar


2

我相信我只能通过使用KeyDown事件来解决这个问题;它有不同的事件参数。


0
尝试像这样设置条件:

代码:

 if (e.KeyCode == (Keys.Back))
 {
        if(textBox1.Text.Length >=3)
        {
             if (textBox1.Text.Contains("-"))
             {
                 textBox1.Text.Replace("-", "");
             }
        }
 }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接