控制控件的输入顺序

下面是一个控制焦点输入的类

Public Class controlFocus
    Dim Fctrl() As Control '定义一个控件数组,用来记录需要控制输入焦点的控件。
    Dim index As Int32      '控件的索引变量


    Sub New(ByVal cunt As Int32)’构造函数,设定有多少个控件需要控制焦点。
        '参数为控件的个数,cunt>1
        If cunt < 1 Then Throw New Exception '例外
        index = 0  ‘初始化控件索引
        ReDim Fctrl(cunt - 1)    '设置控件的个数,给控件数组赋值。
    End Sub

    Public Sub AddControl(ByVal ctrl As Control)’把控件添加到控件数组中,并用委托来设置控件的keydown事件。
        Fctrl(index) = ctrl
        index += 1
        AddHandler ctrl.KeyDown, AddressOf setControlFocus '设置事件处理程序
    End Sub

    Private Sub setControlFocus(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
        Dim curCtrl As Control
        Dim nextCtrl As Control '下一个接受焦点的控件
        curCtrl = CType(sender, Control) '当前控件
        Dim i As Int32
        Select Case e.KeyCode
            Case Keys.Enter, Keys.Right, Keys.Down ‘当按下的键是回车、向右、向下时响应。
                i = Fctrl.IndexOf(Fctrl, curCtrl) '搜索发送消息的控件
                i = (i + 1) Mod Fctrl.Length '下一个接受焦点的控件的索引
                Fctrl(i).Focus()
            Case Keys.Up, Keys.Left‘当按下的键是向上、向左时响应。
               i = Fctrl.IndexOf(Fctrl, curCtrl) '搜索发送消息的控件
                i = (i - 1) Mod Fctrl.Length '上一个接受焦点的控件的索引
                If i >= 0 Then Fctrl(i).Focus()
        End Select
    End Sub
End Class

应用:

如你要控制一个BTTON和两个TEXTBOX控件的输入焦点。

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim cfs As New controlFocus(3)
        cfs.AddControl(TextBox1)
        cfs.AddControl(TextBox2)
        cfs.AddControl(Button1)
    End Sub

-----------------------------------整理者:tl_pear(飘叶寻梦)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值