奥运 项目
Aug 16

最近做项目遇到了一个比较bt的问题,就是客户要求按Enter的时间实现Tab键的效果.而且还要跳过button之类的东东. 最后用了三个函数来解决了.在load的时间调用第一个函数就好了.如果页面有其他的容器,自己参照myGetNextControl添加一个case就好了

VB是个很神奇的语言,VB.net在很多时间继承了这些神奇的地方.

    Private Sub TabHandleEnter(ByRef controls As Control.ControlCollection)
        For Each ctl As Control In controls
            If ctl.GetType.Name.Equals("GroupBox") Or ctl.GetType.Name.Equals("Panel") Then
                TabHandleEnter(ctl.Controls)
            Else
                AddHandler ctl.KeyDown, AddressOf EnterKeyDown
            End If
        Next

    End Sub
    ''' <summary>
    ''' 按下Enter时的处理
    ''' </summary>
    Private Sub EnterKeyDown(ByVal sender As Object, ByVal e As KeyEventArgs)

        If Not e.Shift And e.KeyCode = Keys.Enter Then
            myGetNextControl(CType(sender, Control), True)
        ElseIf e.Shift And e.KeyCode = Keys.Enter Then
            myGetNextControl(CType(sender, Control), False)
        End If
    End Sub
 

    Private Sub myGetNextControl(ByVal ctl As Control, ByVal forward As Boolean)
        Dim vControl As Control = GetNextControl(ctl, forward)
        If vControl Is Nothing Then Exit Sub

        If Not "SKIP".Equals(vControl.AccessibleName) And vControl.Enabled And vControl.Visible Then
            Select Case vControl.GetType.Name
                Case "GroupBox"
                    myGetNextControl(vControl, forward)
                    Exit Sub
                Case "Panel"
                    myGetNextControl(vControl, forward)
                    Exit Sub
                Case "RadioButton"
                    If CType(vControl, RadioButton).Checked Then
                        vControl.Focus()
                        Exit Sub
                    Else
                        Exit Select
                    End If
                Case "Label"
                    Exit Select
                Case Else
                    vControl.Focus()
                    Exit Sub
            End Select
        End If
        myGetNextControl(vControl, forward)

    End Sub
 
如果只是简单的把Enter替换成Tab的话,把第二个函数的内容换成发送一个tab键就okay了!

bookmark

written by 刘浏 \\ tags:


One Response to “Enter激活Tab事件”

  1. 1. 刘浏 Says:

    郁闷,代码显示有点问题,明天在收拾了…

    [回复]

Leave a Reply