0

我正在使用以下代码来确定是否为“。” (句号)已进入网络浏览器控件:

    private void body_KeyUp(object sender, HtmlElementEventArgs e)
    {
        if (e.KeyPressedCode == '.')
        {
            // Do something
        }
    }

根据 msdn KeyPressedCode 返回一个 ASCII 值。如果我输入“。”,我通过断点得到的是“190”。然而。这甚至没有在标准 ASCII 表中列出。显然我可以简单地测试 190,但我担心 KeyPressedCode 可能会在具有不同代码页、语言等的不同系统上返回不同的值。

那么您能否解释一下为什么 KeyPressedCode 返回“190”而不是“46”以及如何“安全”地处理这个问题?

有趣的是,''(空格)的返回值总是正确的('32')。使用 System.Text.Encoding.GetEncoding 和不同的代码页并不能解决问题,但是我对代码页没有太多经验。

4

2 回答 2

2

您可能使用的是有线键盘,因为键码 190 是 OEM 号码键码.。如果您使用的是笔记本电脑,它将按预期运行。

于 2012-07-27T07:40:27.173 回答
1

只是一个疯狂的猜测,但是您检查过e.AltKeyPressede.CtrlKeyPressede.ShiftKeyPressed的值吗?希望你看到我在说什么...

于 2009-07-19T15:53:07.207 回答