最近写一程序,在窗体上有若干TextBox,ComboBox,如何将这两类控件按顺序遍历出来。并实现在回车后焦点自动移向下一控件,得到焦点的控件背景色将发生变化,失去焦点后背景色还原。

解决方案 »

  1.   

    //在窗体上有若干TextBox,ComboBox,如何将这两类控件按顺序遍历出来。
    可以将TextBox,ComboBox设置为控件数组,然后通过Index属性访问即可 :)//在回车后焦点自动移向下一控件,得到焦点的控件背景色将发生变化,失去焦点后背景色还原。
    这个可以借助于控件的GotFocus和LostFocus事件.
      

  2.   

    贴出代码可以吗?如果用单个控件的GotFocus和LostFocus事件的话,那会逐个控件添加代码,这样太麻烦,效率也不高。能不能做一Function解决。
      

  3.   

    贴出代码可以吗?如果用单个控件的GotFocus和LostFocus事件的话,那会逐个控件添加代码,这样太麻烦,效率也不高。能不能做一Function解决。  用下面代码可以实现焦点自动移动,但是为什么返回焦点总是该焦点的前一个呢?
    比如有text1,text2,text3,当原光标在text1控件的时候产生回车事件,光标会自动进入text2,但是当前的activecontrol为什么会是text1呢?
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)    If KeyCode = vbKeyReturn Then
            SendKeys "{Tab}"
            
            Me.ActiveControl.BackColor = vbRed
            
        End If
    End Sub
      

  4.   

    //用下面代码可以实现焦点自动移动,但是为什么返回焦点总是该焦点的前一个呢?
    比如有text1,text2,text3,当原光标在text1控件的时候产生回车事件,光标会自动进入text2,但是当前的activecontrol为什么会是text1呢?
    这样:
    将SendKeys "{Tab}"
    修改为:
    SendKeys "{Tab}", True
      

  5.   


    语法rainstormmaster(暴风雨 v2.0) 正解SendKeys string[, wait]SendKeys 语句的语法具有以下几个命名参数:部分 描述 
    string 必需的。字符串表达式,指定要发送的按键消息。 
    Wait 可选的。指定等待方式的 [email protected] 值。如果为 False(缺省值),则控件在按键发送出去之后立刻返回到过程。如果为 True,则按键消息必须在控件返回到过程之前加以处理。 
      

  6.   

    还有一点需要补充.
    将窗口的keypress设置为true才行
      

  7.   

    rem 这样可以了:
    rem 将窗口的keypress设置为trueDim obj As Control
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
        If KeyCode = vbKeyReturn Then
            Set obj = Me.ActiveControl
            SendKeys "{Tab}", True
            Me.ActiveControl.BackColor = vbRed
            obj.BackColor = vbWhite
        End If
    End Sub
      

  8.   


    1.将窗体的KeyPreview 设为True
    2.在窗体的KeyPress事件中添加代码就行了:
    Private Sub Form_KeyPress(KeyAscii As Integer)
        SendKeys "{Tab}"
    End Sub
      

  9.   

    谢谢各位,问题已基本解决,但是这样只是对于键盘的回车事件有效,TAB键和鼠标键无效,如何实现呢。