2014-06-18 41 views
1

有沒有辦法從父窗體覆蓋窗體按鈕單擊事件?從另一種形式覆蓋按鈕單擊事件

例如,這裏是種什麼我已經回事...

Dim newForm As New FormB 
newForm.someproperty1 = True 
newForm.someprpoerty2 = False 

newForm.Show(Me) 

我需要知道什麼時候newForm關閉被點擊了哪個按鈕。我通常會使用'ShowDialog',但是我不能這樣做,因爲newForm需要打開一個不能作爲對話框打開的DIFFERENT表單......長話短說,沒有完全重寫我們的整個軟件,我不能使用ShowDialog。

無論如何,有無論如何,我可以添加從另一種形式的按鈕點擊事件?喜歡的東西...

Dim newForm As New FormB 
newForm.btn1.click = SomeNewFunctionOrSubroutine() 
newForm.btn2.click = SomeOtherFunctionOrSub() 

newForm.Show(Me) 

我一直在尋找的事件和事件處理,但他們沒有做太多的感覺......

任何提示嗎?

回答

3

你可以在FormB調用AddHandler的在您的按鈕(前提是其修改屬性是公共)

' This code is inside your Parent form 
AddHandler newForm.btn1.click, AddressOf Me.SomeOtherFunctionOrSub 


' This code is inside your Parent form 
Protected Sub SomeOtherFunctionOrSub(sender as Object, e As EventArgs) 
    ...... 
End Sub 

添加的處理程序是一種常見的做法攔截不同形式的操作(例如,您可能如果您希望隨時打開newForm的一個實例,則還需要攔截Form.Closing事件。)
另一種方法(更復雜)是訂閱自定義事件並需要FormB代碼的配合。但在這種情況下,似乎沒有必要。

+0

我認真地擁抱你,你華麗的混蛋。 –

+0

很高興能有所幫助。再見... – Steve

相關問題