1

考虑我有两种形式,form1 和 form2

如何使用 vb.net 中的编码单击、鼠标悬停(任何事件)另一个表单上的特定按钮?

4

2 回答 2

3

我假设 Form1 启动 Form2,因为描述中没有很多信息。

当 Form1 启动时,有两个按钮:“button1”和“Launch Form 2”(忘记更改 button1 上的文本,抱歉。:(

表格1

点击“Launch Form 2”,弹出Form2:

表格2

单击 Form1 上的“button1”,会弹出一个来自 Form1 的消息框,内容为:

form1Message

单击 Form2 上的“button1”,会弹出一个来自 Form1 的消息框,内容为:

form2Message

这是代码:

表格1

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”的公共事件。可以随时从任何代码块引发该事件。我只是决定在单击表单上的按钮时提出它。

Form 1 有一个 Form2 WithEvents的实例。使用 WithEvents 关键字非常重要,否则 Form2 中的公共事件将不会显示。:(

Form 1 有一个 sub 处理 Form2 单击其按钮时引发的“SimulateForm1ButtonClick”。

现在,这里有另一个重要的细节:当在 Form1 上单击 button1 时执行的代码实际上是在一个名为 RunSomeCode() 的私有子中。这很重要,因为它使代码可以从 Form1 的任何其他部分访问,即处理 Form2 事件的部分。

我希望这对你有所帮助。我不确定你在问什么。:/

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

于 2012-04-21T07:48:07.917 回答
2

如果您试图触发事件,只需Form2.Button1.PerformClick()假设表单 2 上的按钮称为“button1”。

于 2012-04-23T21:38:09.330 回答