以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  用sendkey执行回车命令应该怎么写?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=4127)

--  作者:reachtone
--  发布时间:2009/8/29 9:18:00
--  用sendkey执行回车命令应该怎么写?
在窗口Table的双击事件中,设置以下代码:
If CurrentTable.Current IsNot Nothing Then
    Forms("窗口1").Controls("Button3").Select()
    Sendkeys.Send("{ENTER}")
End If
其目的是,双击后自动执行按钮(Button3)的事件。
但是,这个代码将焦点移动到按钮上以后,并未执行该按钮上的事件。请问正确的代码应该怎么写?

--  作者:reachtone
--  发布时间:2009/8/29 9:36:00
--  
总觉得sendkey很奇怪,刚才再试又可以了。
一会好,一会不好,可能是什么原因呢?
--  作者:yangming
--  发布时间:2009/8/29 10:40:00
--  
我用sendkey好多次都发现不太管用,所以现在我不用它了
--  作者:czy
--  发布时间:2009/8/29 11:42:00
--  
以下是引用reachtone在2009-8-29 9:18:00的发言:
在窗口Table的双击事件中,设置以下代码:
If CurrentTable.Current IsNot Nothing Then
    Forms("窗口1").Controls("Button3").Select()
    Sendkeys.Send("{ENTER}")
End If
其目的是,双击后自动执行按钮(Button3)的事件。
但是,这个代码将焦点移动到按钮上以后,并未执行该按钮上的事件。请问正确的代码应该怎么写?


奇怪,我没发现问题呀。

如果真的不行,可以这样试试:
If CurrentTable.Current IsNot Nothing Then
    Sendkeys.Send("{ENTER}")
    Forms("窗口1").Controls("Button3").Select()
End If


--  作者:czy
--  发布时间:2009/8/29 11:44:00
--  
或者这样试试:

If CurrentTable.Current IsNot Nothing Then
    Forms("窗口1").Controls("Button3").Select()
    Application.Doevents
    Sendkeys.Send("{ENTER}")
End If


因我测试不出问题,以上都是瞎蒙的。
--  作者:reachtone
--  发布时间:2009/8/29 13:38:00
--  

    sendkey上午的时候,有时管用,有时不管用。刚才再试,怎么试都是正常的。真是晕死了!
    还有就是,请老六在有空的时候,一定要好好考虑一下如何调用现成事件的问题。这个问题我在上个月提过,现在随着项目应用的深入,这个需求越来越迫切!比如,上例中的按钮事件,如果该按钮有模拟单击的方法,就根本用不到sendkey了。除此之外,还有这种情况:
    我在table的keydown事件中设置了事件,如果回车就会将当前行的值取出来填到另外一个表里。现在我想在DoubleClick里也完成同样的功能,难道要将同样的代码再复制过来一遍吗?当然,可以用函数解决,但是,随着功能越来越多,这样的函数也会不断增加,恐怕到最后自己都搞不清哪是哪了。所以,最好的办法是,可以直接模拟执行现成的事件!


--  作者:狐狸爸爸
--  发布时间:2009/8/31 8:00:00
--  
给按钮加一个performClick方法算了