2012-04-21 127 views
1

考慮我在vb.net使用編碼具有高於(任何事件)的特定按鈕兩種形式,Form 1和Form點擊另一種形式

我怎麼可以點擊,鼠標另一種形式上上的特定按鈕?

+0

你想達到什麼目的?你只是試圖從Form2中執行Form1中的一些代碼? – darin 2012-04-21 07:21:31

回答

3

我假設Form1啓動Form2,因爲描述中沒有很多信息。

當Form1的推出,有兩個按鈕: 「Button1的」 和 「啓動表2」(忘了更改Button1的文本,抱歉:(

form1

當你點擊「啓動表格2。 」窗體2彈出:

form2

點擊 「在Form1上的按鈕1」,一個消息框,從Form1中發起彈出說:

form1Message

單擊窗體2的 「Button1的」,從Form1中ALSO發起一個消息框彈出說:

form2Message

下面的代碼:

Form1中

Public Class Form1 

    Private WithEvents frm2 As New Form2 

    Private Sub Form1Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Form1Button.Click 
     RunSomeCode("Called from form 1!") 
    End Sub 

    Public Sub RunSomeCode(ByVal message As String) 
     MessageBox.Show(message) 
    End Sub 

    Private Sub Form1LaunchForm2Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Form1LaunchForm2Button.Click 
     frm2.Activate() 
     frm2.Show() 
    End Sub 

    Private Sub frm2_SimulateForm1ButtonClick() Handles frm2.SimulateForm1ButtonClick 
     RunSomeCode("Called from form 2!") 
    End Sub 
End Class 

窗體2

Public Class Form2 

    Public Event SimulateForm1ButtonClick() 

    Private Sub Form2Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Form2Button.Click 
     RaiseEvent SimulateForm1ButtonClick() 
    End Sub 
End Class 

它是如何工作

表2有一個名爲 「SimulateForm1ButtonClick」 公益活動。從任何代碼塊都可以隨時提升該事件。當我點擊表格上的按鈕時,我決定提出。

表格1有一個Form2的實例WithEvents。使用WithEvents關鍵字非常重要,否則Form2中的公共事件將不會顯示。 :(

表1有處理當窗體2點擊它的按鈕時提出的「SimulateForm1ButtonClick」子

現在,這裏是另一個重要的細節:點擊Form1上按鈕1時執行的代碼實際上是一個私人小組稱爲RunSomeCode()。這是非常重要的,因爲它使代碼可以從Form1的任何其他部分訪問,即處理Form2事件的部分。確定你正在問什麼:/

代碼:http://darin.hoover.fm/code/dl/FormsSandbox.zip

2

如果您嘗試觸發該事件,則只需使用Form2.Button1.PerformClick()即可,假設表單2上的按鈕稱爲「button1」。

+0

我寧願將點擊方法中的代碼放在公開的單獨方法中。所以你可以用這兩種形式調用這個方法。 – Tomtom 2012-04-23 21:42:36

+1

'Public Sub Button1_Click' 'Form2.Button1.PerformClick()' 'End Sub' – Azerty560 2012-04-26 16:32:06

+0

感謝您的回答,它對我來說很好 – 2012-04-27 08:12:16