推 Peruheru:那果然還是傳入一個參數這樣,只是參數代表了索引值 06/26 16:10
※ 引述《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