|
■No94364 (zoon さん) に返信 > Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles MyBase.KeyDown
KeyPress イベントでは駄目でしょうか?
Private Sub Form1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles MyBase.KeyPress Select Case e.KeyChar Case "["c BackColor = Color.LemonChiffon Case "]"c BackColor = Color.Cyan Case "\"c BackColor = Color.LightPink Case "/"c BackColor = Color.SeaGreen Case Else MyBase.ResetBackColor() End Select End Sub
> キーボード右下にある > カギ括弧 [ や ] > スラッシュ・バックスラッシュ / \
「入力した文字」に反応したいなら KeyPress イベントです。 「押されたキー」に反応したいなら KeyDown イベントです。
たとえば日本語 109 キーボードだと、 '\' の文字を入力する際に、[Backspace] の左隣のキーと、[右Shift] の左隣のキーの 2 箇所が割り当てられていることがあります。
このどちらが押されたとしても、'\' の入力として扱いたいのなら、 KeyPress イベントが向いています。
一方、それらを区別したいのであれば KeyDown イベントとなりますが、 こちらは「文字」を伴わない F2 や Shift 等にも反応できる反面、 CapsLock、NumLock、KanaLock 等のトグル状態を追跡しないため、 同じキーに複数の文字が割り当てられていた場合に、区別できません。
|