为什么使用SendKeys,只有第一次的时候不能调用keypress

dragon809 2012-08-20 10:59:44
我把SendKeys放在combo_click( )中,在form_load里执行combo.listindex=0
接下来:
在combobox中使用SendKeys,可是不知为什么我的程序里,只有第一次的时候不能触发keypress事件
在后面的combo_click( )中,sendkeys却可以触发keypress事件

怎么回事?
...全文
128 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
贝隆 2012-08-20
  • 打赏
  • 举报
回复
根据我的测试,是能触发KeyPress事件的

Option Explicit

Private Sub Combo1_Click()
SendKeys "{Enter}"
Debug.Print "Click"
End Sub

Private Sub Combo1_KeyPress(KeyAscii As Integer)
Debug.Print "KeyPress"
End Sub

Private Sub Form_Load()
Combo1.AddItem "123"
Combo1.AddItem "456"
End Sub

dragon809 2012-08-20
  • 打赏
  • 举报
回复
对啊,第一次没有触发就是说程序刚打开没有msgbox
这么怎么回事?

但我另外建一个简单的工程测试,却发现可以了
但为什么这个不行,这个有用到皮肤还有模块、类等是别人的代码
能分析一下可能是什么原因吗?我自己分析不出来,不知道去哪里找问题
mouse_event 2012-08-20
  • 打赏
  • 举报
回复
我不太明白你说的意思,“第一次没有触发keypress,而之后几次触发了”是什么意思?印象里Combo的Click事件是用户在选择选项时触发的,如果你第一次只是点击那个向下的按钮肯定触发不了
另外,如果你在Form_Load里就加入了combo.ListIndex = 0,那不应该程序刚打开就Msgbox了么?
dragon809 2012-08-20
  • 打赏
  • 举报
回复
以下是简要代码:
Private Sub Form_Load()
Dim rschk As ADODB.Recordset
Dim sqlstr As String
Set rschk = New ADODB.Recordset
sqlstr = "select * from location "
rschk.Open sqlstr, Form1.connchk, 1, 1
If Not rschk.EOF Then
Do While Not rschk.EOF
Combo2.AddItem Trim(rschk("location"))
rschk.MoveNext
Loop
Else
Combo2.AddItem "尚未添加"
End If
rschk.Close
Set rschk = Nothing
Combo2.ListIndex = 0
End Sub

Private Sub Combo2_Click()
SendKeys "{ENTER}"
End Sub
Private Sub Combo2_KeyPress(KeyAscii As Integer)
msgbox "触发事件!"
End Sub
mouse_event 2012-08-20
  • 打赏
  • 举报
回复
能麻烦楼主把代码贴出来吗,这样更直观

7,765

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧