c#处理按键

时间:2010-10-14 18:40:22

标签: c#

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar < '0' || e.KeyChar > '9')
        if (e.KeyChar != '\b')
            e.Handled = true;

}

我不明白这段代码除了退格和数字之外什么都不允许。

  1. 第一个if语句是说它不是0 - 9然后什么都不做?
  2. 第二个是说它不是退格,什么都不做?
  3. e.Handled=True做什么?

3 个答案:

答案 0 :(得分:13)

第一个if语句基本上是说 是一个数字,允许它正常进行 - 否则进入第二个if语句。

第二个if语句说如果它也不是退格键,则允许它正常进行 - 否则转到赋值语句。

e.Handled = true;表示事件处理程序已经处理了事件并处理了它,因此不需要再进行处理。换句话说,请不要采取任何进一步的行动。

这是写同一个身体的另一种方式:

bool isDigit = e.KeyChar >= '0' && e.KeyChar <= '9';
bool isBackspace = e.KeyChar == '\b';

// If we get anything other than a digit or backspace, tell the rest of
// the event processing logic to ignore this event
if (!isDigit && !isBackspace)
{
    e.Handled = true;
}

答案 1 :(得分:1)

此代码正在做的是在角色

时设置e.Handled=true
  • 不是数字字符
  • 而不是退格字符

答案 2 :(得分:1)

1和2:实际上是另一种方式。这就是说“如果密钥不是0-9,那么检查它是否是退格。如果它不是退格,那么e.Handled是真的。”

3:当e.Handled设置为true时,控件,父表单以及其他任何听取按键操作的内容都不会执行任何操作。 e.Handled基本上说,“它被照顾,没有人担心它。”