2017-06-14 29 views
0

可以做到嗎?例如像,是否可以使用不同的事件調用另一個私人子?

Private Sub inputno_tb_MouseDown(sender As Object, e As MouseEventArgs) 
    'My code 
End Sub 

Private Sub stacker1apcs_tb_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) 
    'Calling Private Sub inputno_tb_MouseDown 
End Sub 
+3

那些不只是私人方法,他們是事件處理程序。如果你希望他們都做類似的事情,可以用它創建一個新的子代碼,然後從每個事件中調用它 – Plutonix

+0

如果沒有更多信息,這是無法回答的。如果你想給出一個被調用的事件的外觀,只需像調用其他方法一樣調用Sub,這使得可讀性更加困難,更好的方法是讓2個事件處理程序調用第三個「共享」方法來處理都。 – Mike

回答

0

這當然是可以做到的,就像這樣:

Private Sub inputno_tb_MouseDown(sender As Object, e As MouseEventArgs) 
    'My code 
End Sub 

Private Sub stacker1apcs_tb_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) 
    inputno_tb_MouseDown(sender, MouseEventArgs.Empty) 
End Sub 

如果你在代碼中使用sender,你可能想將其更新爲stacker1apcs_tb代替,或任何你喜歡的。

+0

*「只要你的代碼不使用發件人或e對象,你可以發送Nothing作爲參數。」*一個相當重要的(和危險的)假設。在這種情況下,看起來發件人是'stacker1apcs_tb',那麼爲什麼不通過呢?事件參數應該只是'EventArgs.Empty'而不是'Nothing'。 –

+0

危險?如果他知道他沒有使用它,那麼沒有什麼可擔心的。這不像他提出的任何外部代碼正在處理的事件。但我會更新我的代碼以包含您的觀點。 – Magnus

+0

危險是因爲事件處理程序中的代碼可能會隨時由其他程序員更新,而沒有任何理由認爲它被不安全地調用。我的意思是,不,它不像計算機會爆炸,但是你會遇到崩潰,你必須進行調試才能找出原因,這是浪費時間。總是更好地編寫健壯的代碼,而不是脆弱的代碼。 –

相關問題