2013-05-16 342 views
0

我只想連接兩個任意控件,這樣如果點擊一個,另一個應該就像點擊一樣 - 這是甚至是遠程可能的嗎?它似乎應該是如此的容易,但互聯網似乎幹,除非我不知道如何正確地問這個問題...我看到一種方法來「點擊」按鈕控制,但如果目標不是一個按鈕? - 我不知道可能由此控件的單擊事件觸發的任何函數的名稱,因此我無法直接調用它。我想有使用的Windows API的一些方法,但我不能找到任何這很好,簡單的VB如何在VB窗體中模擬點擊事件Windows窗體

我點擊窗體上的Label控件。我想處理該點擊事件,運行一行代碼,然後在關聯的RadioButton控件上模擬點擊事件

這可能嗎?怎麼樣?

回答

1
+0

「?似乎互聯網同意了,因爲我找不到任何人推薦它,但它沒有被棄用,所以使用它的缺點是什麼? –

+0

這是關於UI和程序佈局的分離。如果你真的想要的是單選按鈕,你可以點擊標籤,這就是爲什麼單選按鈕類有一個Text屬性。 我在日常工作中遇到的一個基本罪孽是「窗體驅動設計」,其中大量程序代碼隱藏在傳統Windows程序的事件處理程序中。這使得很難發現,難以調試,並且不可能自動測試。 最好使用事件觸發程序代碼,如果沒有其他理由,它會釋放你重新設計UI後者。 – DougM

+0

在我的情況 - 這似乎是創建一個程序,你討厭打開 - 我有文本框呈現爲標籤(TabStop false等),直到Ctrl +單擊,在這一點上,他們變得可編輯。如果在沒有Ctrl的情況下點擊,我更喜歡它們表現得像是其他控件的一部分,如普通文本框或單選按鈕。 (這是一個個人興趣計劃,所以你幾乎不可能使用它) –

1

更好的方法是創建一個通用的子程序,單擊任何一個控件都會調用該子程序。通過這種方式點擊控件將執行自己的代碼,這些代碼可能會有所不同,還有一些通用代碼。

+0

這不會處理連接到目標控制,但是其他事件處理器,並且可能是一些其他的事情 - 如果它不是可能的,其不可能的 - 我只是希望你爲什麼如果非要說」有人否則知道 –

0

這是你如何完成無論哪個控件事件被觸發,都執行相同的代碼。

Private Sub ClickMe() 
    'code to execute 
End Sub 

Private Sub label1_Click(...) ... 
    ClickMe() 
End Sub 

Private Sub rb_checked(...) ... 
    ClickMe() 
End Sub