タイトル | : Re^2: 逆フォーカス移動 |
記事No | : 4534 |
投稿日 | : 2006/11/16(Thu) 10:45 |
投稿者 | : フウセンウナギ |
> > という風にできたのですが、vb2005ではkeybd_eventは使えない?ようで、うまくいきません。 > > VB2005 でも、Win32API関数(keybd_event)は使用できますよ。 > この掲示板の[ワード検索]で keybd_event をキーワードに検索して見て下さい。
keybd_eventのapi関数の宣言のところで、型をすべてintegerに変えると認識してくれました。 Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Integer, _ ByVal bScan As Integer, _ ByVal dwFlags As Integer, _ ByVal dwExtraInfo As Integer)
それで以下のようにイベントを書いてみました。 フォームにテキストを4つ用意します。タブ順序はt1→t2→t3→t4です。
Private Sub t1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) _ Handles t1.KeyDown, t2.KeyDown, t3.KeyDown, t4.KeyDown
t1 = DirectCast(sender, TextBox) Select Case e.KeyCode Case Keys.Return, Keys.Down 'ボタンを押した Call keybd_event(Keys.Tab, 0, 0, 0) 'ボタンを放した Call keybd_event(Keys.Tab, 0, 2, 0) Case Keys.Up 'シフトボタンを押した Call keybd_event(Keys.Shift, 0, 0, 0) 'ボタンを押した Call keybd_event(Keys.Tab, 0, 0, 0) 'ボタンを放した Call keybd_event(Keys.Tab, 0, 2, 0) 'シフトボタンを放した Call keybd_event(Keys.Shift, 0, 2, 0) End Select End Sub
エンター・下キーで順タブ移動、上キーで逆タブ移動をするのですが、上キーを押しても順タブ 移動になってしまいます。 また、t1〜t4を一巡すると、t1でエンターキーを押しても何も反応してくれません。 何か問題があるのでしょうか?
|