0

如果您是组合框中的箭头键项目,vb.net 只会触发 selectedindexchanged 事件。我想知道他们是在向上还是向下键,或者他们实际上是用鼠标点击了该项目。

原因是如果他们用鼠标选择了项目,那么我会将焦点放回主面板滚动条,这样他们就可以在选择项目后立即使用滚轮。

如果他们通过组合框中的项目使用箭头键,则不要关注主面板。

我尝试捕获组合框的 keyup 事件,但如果您在组合框中使用箭头键控项目,则它不起作用。

4

1 回答 1

0

您实际上可以将 PreviewKeyDown 事件与组合框的 MouseUp 事件一起使用。

    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 回答