tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^2: 逆フォーカス移動
投稿日: 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でエンターキーを押しても何も反応してくれません。
何か問題があるのでしょうか?

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。