0

次のコードを使用して、「。」かどうかを判断しています。(ピリオド) が webbrowser コントロールに入力されました:

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

msdn KeyPressedCode によると、ASCII 値が返されます。「.」を入力すると、ブレークポイントによって得られるのは「190」です。でも。これは、標準の ASCII テーブルにも記載されていません。もちろん、単純に 190 をテストすることもできますが、KeyPressedCode は、コード ページや言語などが異なるシステムごとに異なる値を返すのではないかと心配しています。

KeyPressedCode が「46」ではなく「190」を返す理由と、この問題を「安全に」管理する方法を教えてください。

興味深いことに、' ' (スペース) の戻り値は常に正しい ('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 に答える