作者Peruheru (还在想)
看板Visual_Basic
标题Re: [VB6 ] 键盘动作呼叫按钮的动作!?
时间Thu Jun 25 22:57:41 2009
※ 引述《sdwufei (玉鼎)》之铭言:
: 假如我现在按钮(Command5)已经写好动作了。当然我用滑鼠按按钮
: 他就会执行我的动作。
: 而我希望我按键盘的某个按键(ex:"a")就等於滑鼠去按那个按钮。
: 所以如下的程式就可以达到了。
: Private Sub Text1_KeyPress(KeyAscii As Integer)
: If KeyAscii = 97 Then Command5_Click
: End Sub
: 但是当今天我的按钮是个元件阵列时,例如我下这样的指令就会出错了。
: If KeyAscii = 97 Then Command5(0)_Click
: 请问该怎麽下呢?
我知道你程式问题在哪里了
请你要注意一下
Command5_Click
这个东西是纯粹的Sub
就像如果我写
Private Sub MakeLabel(Byval .....)
.......
....
..
End Sub
那个Command5_Click
其实身分就跟我写的这个MakeLabel是同样的身分
请注意,它们都只是一个Sub
知道你的问题在哪里了吗?
你将Sub当成控制项来看了!
控制项阵列可以使用Command5(0).Text这种方式存取
但是Sub可没这回事
尤其是你的写法
很明显你将Command5_Click
拆成了Command5 和 _Click 两部分
然後试图使用阵列存取Command5阵列的某个控制项
想要触发他的Click事件是吗?
你这麽做
就像我上面宣告了那个 MakeLabel 的Sub以後
将MakeLabel拆成 Make 和 Label
然後试图存取Make(0)Label
你觉得这种东西存在吗?
重点就是
Command5_Click
这是一个完整的Sub名称
并不是你可以擅自将Command5 和 _Click拆成两部分的东西
事实上Command5_Click可以改成任何名称
比如我可以再拿上面宣告的Sub
我可以写完那个MakeLabel的Sub以後
将它Handle给Command5
你就会看到
Private Sub MakeLabel(ByVal ...) Handles Command5.Click
......
....
...
End Sub
这时我按下Command5
呼叫的就是MakeLabel这个Sub
而我的程式可以从头到尾都不存在 Command5_Click 的这个Sub
并非Command5按下时呼叫的Sub就一定得是叫做Command5_Click的Sub
这个Sub要叫什麽名字对程式来说完全没有影响
就算你将某个Sub设定给控制项阵列的事件呼叫函式
你也不能使用Command5(0)_Click这种方式存取
要说为什麽会有错误的话
是因为程式跟本找不到名称叫做Command5(0)_Click的函式可以呼叫
这是有些人会犯的错误,他们看错重点了
程式要找Command5的Click事件时
是去寻找Command5.Click指向哪一个Sub
但是完全不会去管这一个Sub到底叫什麽名字
就算你乱取一通,只要有 xxx.Click事件有指着它,程式就可以找的到
至於有人推文回答的Command5_Click(0)
请注意,这是表示你呼叫Command5_Click这个Sub之後
传入一个参数给它,内容是整数的 0 这个数值
而非想像中的「呼叫编号是第零个控制项的Click处理函式」
或许你先将你Command5的Click事件贴上来给大家看看
不然我只会觉得你的作法很神奇
完全搞不懂你到底想怎麽呼叫
come on~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.168.236.169