- PR -

コマンドボタンのキー制御ができません・・・。

1
投稿者投稿内容
fumy7188
会議室デビュー日: 2004/05/18
投稿数: 3
投稿日時: 2004-05-18 10:41
こんにちは、コマンドボタンのキー制御についての質問なのですが、
上下左右の方向キーを用いてKeyDownイベントを取得する処理を行いたいのですが
テキストボタンなどはうまくいくのにコマンドボタンだけうまくいきません。
おそらくキーコード取得がうまくいっていないと思うのですが・・・。

Private sTblMybutton(,) As Button

Dim iRow As Integer
Dim iCol As Integer

Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

sTblMybutton = New Button(,) {{Button1, Button2}, {Button3, Button4}}
Dim i As Integer '配列のインデックス番号

'// 初期化
iRow = 0
iCol = 0

'// フォーカスを当てる
sTblMybutton(iCol, iRow).Focus()

End Sub


Private Sub Form3_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown

Dim objKey As Object

objKey = e.KeyCode()

If objKey = Keys.Up Then
sTblMybutton(iCol, iRow - 1).Focus()
iRow = iRow - 1
End If
If objKey = Keys.Down Then
sTblMybutton(iCol, iRow + 1).Focus()
iRow = iRow + 1
End If
If objKey = Keys.Left Then
sTblMybutton(iCol - 1, iRow).Focus()
iCol = iCol - 1
End If
If objKey = Keys.Right Then
sTblMybutton(iCol + 1, iRow).Focus()
iCol = iCol + 1
End If

End Sub
CHN
ぬし
会議室デビュー日: 2002/03/07
投稿数: 382
投稿日時: 2004-05-18 11:39
こんにちは。

このような感じの処理なら、フォームのキーイベントでできませんか?

_________________
fumy7188
会議室デビュー日: 2004/05/18
投稿数: 3
投稿日時: 2004-05-18 12:02
どうやら、Keyイベントではイベント自体が発生しないものがあるみたいです。矢印キーや改行キーなどはダメみたいですね・・・。ProcessCmdKeyだとどうにかできそうなので、やってみようと思います。
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2004-05-18 13:52
憶測で書いています。

グリッドでKeyDownイベントをハンドリングしたいのであれば、フォームではなく、グリッドにKeyDownのハンドラを追加する必要があるように思えます。
fumy7188
会議室デビュー日: 2004/05/18
投稿数: 3
投稿日時: 2004-05-18 14:34
グリッドは使用せず、フォームでやっています。ほかにも問題があるかもしれないので、もう一度調べてみようと思います。
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2004-05-18 21:27
よく見ずに、返事書いてしもた。
sTblMybutton(iCol, iRow).Focus()
という記述を見て、Gridと勘違いしてしまいました。
1

スキルアップ/キャリアアップ(JOB@IT)