2012-04-21 124 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