Re: [VB6 ] 鍵盤動作呼叫按鈕的動作!?

看板Visual_Basic作者 (還在想)時間15年前 (2009/06/25 22:57), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/4 (看更多)
※ 引述《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
文章代碼(AID): #1AGv1cWl (Visual_Basic)
討論串 (同標題文章)
文章代碼(AID): #1AGv1cWl (Visual_Basic)