- 題名: BUTTONのKeyPressイベントについて
- 日時: 2004/02/19 17:48:32
- ID: 2597
- この記事の返信元:
- (なし)
- この記事への返信:
- [2622] Re[1]: BUTTONのKeyPressイベントについて2004/02/21 19:32:05
- ツリーを表示
こんばんは、johnさん。ピラルクです。
> なぜ?
規定のフォーカス移動のキーとして処理されるため、
KeyPress,KeyDownには回ってきません。(そういうものです)
> なにか方法がありますか?
ControlのProcessDialogKey, ProcessCmdKey, ProcessKeyMessage
あたりで、こういった標準の動作を変えることが可能です。
手っ取り早くFormでやっちゃうと、以下のような感じ。
Protected Overrides Function ProcessDialogKey(ByVal keyData As Keys) As Boolean
If keyData = Keys.Right OrElse _
keyData = Keys.Down OrElse _
keyData = Keys.Left OrElse _
keyData = Keys.Up Then
If Me.ActiveControl Is Button1 Then
Button2.Focus()
Return True
End If
End If
Return MyBase.ProcessDialogKey(keyData)
End Function
しかし、フォーカス移動の標準の動作を変えることは、
一般にはおすすめできません。多分、GroupBoxかパネルで
分かれているエリアのButtonに移したいのだと思いますが、
このような問題に遭遇した場合は、装飾のあり方や部品の
配置などUIデザインのあり方を再検討するのも一法かと。
あるいは、ここはTabを使ってしかるべき所と割り切る。
分類:[.NET]
↑↓→←を押すと、BUTTONのKeyPressかKeyDownイベントは効きません。
なぜ?
↑↓→←キーよって、カーソルはBUTTONからほかの指定BUTTONへ移動したいです。
なにか方法がありますか?
よろしく。