看板 Visual_Basic 關於我們 聯絡資訊
※ 引述《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
Peruheru:那果然還是傳入一個參數這樣,只是參數代表了索引值 06/26 16:10