作者mraaa (重新出发....)
看板Visual_Basic
标题Re: [VB6 ] 键盘动作呼叫按钮的动作!?
时间Fri Jun 26 06:12:25 2009
※ 引述《Peruheru (还在想)》之铭言:
: ※ 引述《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~
我猜想原PO是有了一组Command Button的阵列.......
则当你想要编写Command_Click事件时.....
你会发现事件的Sub 跟平常的不太一样.....
平常的====> Private Sub Command_Click()
阵列的====> Private Sub Command_Click(byval Index As Integer)
所已.....在KeyPress事件里就必须改成....
If KeyCode = (你想要按哪个按键的KeyCode) Then
Call Command_Click(Command阵列的Index)
End If
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.160.49.136
1F:推 Peruheru:那果然还是传入一个参数这样,只是参数代表了索引值 06/26 16:10