贴出代码可以吗?如果用单个控件的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}"
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
1.将窗体的KeyPreview 设为True 2.在窗体的KeyPress事件中添加代码就行了: Private Sub Form_KeyPress(KeyAscii As Integer) SendKeys "{Tab}" End Sub
可以将TextBox,ComboBox设置为控件数组,然后通过Index属性访问即可 :)//在回车后焦点自动移向下一控件,得到焦点的控件背景色将发生变化,失去焦点后背景色还原。
这个可以借助于控件的GotFocus和LostFocus事件.
比如有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
比如有text1,text2,text3,当原光标在text1控件的时候产生回车事件,光标会自动进入text2,但是当前的activecontrol为什么会是text1呢?
这样:
将SendKeys "{Tab}"
修改为:
SendKeys "{Tab}", True
语法rainstormmaster(暴风雨 v2.0) 正解SendKeys string[, wait]SendKeys 语句的语法具有以下几个命名参数:部分 描述
string 必需的。字符串表达式,指定要发送的按键消息。
Wait 可选的。指定等待方式的 [email protected] 值。如果为 False(缺省值),则控件在按键发送出去之后立刻返回到过程。如果为 True,则按键消息必须在控件返回到过程之前加以处理。
将窗口的keypress设置为true才行
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
1.将窗体的KeyPreview 设为True
2.在窗体的KeyPress事件中添加代码就行了:
Private Sub Form_KeyPress(KeyAscii As Integer)
SendKeys "{Tab}"
End Sub