0

コンボボックス内のアイテムを矢印キーで操作している場合、vb.net は selectedindexchanged イベントのみを発生させます。彼らがキーを上げたり下げたりしているのか、それとも実際にマウスで項目をクリックしたのか知りたいです。

その理由は、マウスでアイテムを選択した場合、メイン パネルのスクロール バーにフォーカスを戻して、アイテムを選択した直後にホイールを使用できるようにするためです。

コンボボックス内の項目を矢印キーで移動する場合は、メイン パネルにフォーカスしないでください。

コンボボックスのキーアップ イベントをキャプチャしようとしましたが、コンボ ボックス内の項目を矢印キーで操作している場合は機能しません。

4

1 に答える 1

0

実際には、コンボボックスの MouseUp イベントと共に PreviewKeyDown イベントを使用できます。

    Dim UsePanelScroll As Boolean = False

    Private Sub ComboBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        'some code

        If UsePanelScroll = True Then
            Panel1.Focus()
        End If

    End Sub

    Private Sub ComboBox_PreviewKeyDown(sender As Object, e As System.Windows.Forms.PreviewKeyDownEventArgs)
        Select Case e.KeyCode
            Case Keys.Tab, Keys.Up, Keys.Down
                UsePanelScroll = False
            Case Else
                UsePanelScroll = True
        End Select
    End Sub

    Private Sub ComboBox_MouseUp(sender As System.Object, e As System.Windows.Forms.MouseEventArgs)
        If e.Button = Windows.Forms.MouseButtons.Left Then
            UsePanelScroll = True
        End If
    End Sub
于 2012-10-26T17:53:33.943 に答える