- - PR -
コマンドボタンのキー制御ができません・・・。
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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 |
|
投稿日時: 2004-05-18 11:39
こんにちは。
このような感じの処理なら、フォームのキーイベントでできませんか? _________________ |
|
投稿日時: 2004-05-18 12:02
どうやら、Keyイベントではイベント自体が発生しないものがあるみたいです。矢印キーや改行キーなどはダメみたいですね・・・。ProcessCmdKeyだとどうにかできそうなので、やってみようと思います。
|
|
投稿日時: 2004-05-18 13:52
憶測で書いています。
グリッドでKeyDownイベントをハンドリングしたいのであれば、フォームではなく、グリッドにKeyDownのハンドラを追加する必要があるように思えます。 |
|
投稿日時: 2004-05-18 14:34
グリッドは使用せず、フォームでやっています。ほかにも問題があるかもしれないので、もう一度調べてみようと思います。
|
|
投稿日時: 2004-05-18 21:27
よく見ずに、返事書いてしもた。
sTblMybutton(iCol, iRow).Focus() という記述を見て、Gridと勘違いしてしまいました。 |
1