DOBON.NET DOBON.NETプログラミング掲示板過去ログ

keyValueの値から表示される文字に変換

環境/言語:[winXP / VB.NET 2003]
分類:[.NET]

おせわになります、かなだかです。

現在、keyValueの文字コード値から実際にディスプレイへ表示される文字を取得するプログラムを組んでいるのですが、

' ByVal e As System.Windows.Forms.KeyEventArgs
' Send先はテキストボックス
SendKeys.Send( Chr( e.KeyValue ) )

とした場合、小文字の'a'を入力したつもりでも、実際に表示されるのは大文字の'A'となってしまいます。
'a'と入力されれば、'a'と表示したいのですが、どのようにすればよいのでしょうか?
keyValueからでは無理。
どちらも同じ数値であるのにkeyValueで判別しようとすること自体変です。
■No17809に返信(はいこーんさんの記事)
> keyValueからでは無理。
> どちらも同じ数値であるのにkeyValueで判別しようとすること自体変です。

返信ありがとうございます。
CapsLockやShiftボタンの状態を確認して、実現できそうかどうか試してみます。
> 現在、keyValueの文字コード値から実際にディスプレイへ表示される文字を取得するプログラムを組んでいるのですが、
> ' ByVal e As System.Windows.Forms.KeyEventArgs

KeyEventArgs という事は、KeyDown / KeyUp イベントですよね。
「文字」をターゲットにしたいのであれば、KeyPress イベントの
KeyPressEventArgs から得たほうが良いかと思いますよ。

KeyDown は、キーボードの物理的な『キー』の位置を表現するものなので、
テンキーの[num 1]と、標準キーの[1] を区別したりする目的には使えますが、
同じキーである "A" と "a" のような違いを判定するのには向かないからです。

逆に KeyPress は、『文字』に対する物なので、"A" の入力と "a" の入力とを
区別する事ができます。その代わりに、[num 1] と[1] は同じ文字なので
区別できませんし、文字として認識できない[↑][→]などの矢印キーや
[F1][F2]などのファンクションキーの判定にも使えません。

DOBON.NET | プログラミング道 | プログラミング掲示板