Re: [VB6 ] 鍵盤動作呼叫按鈕的動作!?
※ 引述《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
討論串 (同標題文章)