使用vb.net对第三方应用程序表单事件做出反应

时间:2013-09-05 03:58:14

标签: vb.net forms event-handling

我想知道如何编写我的VB.net应用程序以响应第三方应用程序中的表单加载事件(也是用VB.net编写的)

为了测试,我创建了两个基本程序,一个有两个表单(程序A)和一个程序(程序B),它们试图收听程序A的相应表单加载事件。我已经尝试过使用WithEvents但是当程序的第二个表单加载时它不会被触发。

以下是计划A的代码:

Public Class StartPage
  Public WithEvents loadtimer As New System.Windows.Forms.Timer

  Private Sub StartPage_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    loadtimer.Interval = 1000
    loadtimer.Enabled = True
    loadtimer.Start()
  End Sub

  Private Sub loadtimer_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles loadtimer.Tick
    loadtimer.Stop()
    SystemStatus.Show()
  End Sub

End Class


Public Class SystemStatus
  Inherits StartPage

  Private Sub StartPage_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
      Me.Label1.Text = "This is the form that I want to listen for the load event"
      Me.loadtimer.Enabled = False
  End Sub
End Class

以下是计划B的代码:

Imports Program_A

Public Class ListeningForm
  Dim WithEvents testlisten As New Program_A.SystemStatus

  Private Sub testlisten_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles testlisten.Load
    Label1.Text = "SystemStatus form loaded"
  End Sub

  Private Sub ListeningForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Label1.Text = "Waiting for SystemStatus load event..."
  End Sub
End Class

在编程方面我是新手,所以也许这甚至不可能,或者我还没有理解我一直在阅读的东西。无论如何,请告诉我我的下一步行动应该是什么。

非常感谢,提前 theoleric

1 个答案:

答案 0 :(得分:0)

这可以满足您的要求。

Imports Program_A

Public Class ListeningForm
 Dim WithEvents testlisten As New SystemStatus

 Private Sub testlisten_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles testlisten.Load
  ' now this event will fire
  Label1.Text = "SystemStatus form loaded"
 End Sub

 Private Sub ListeningForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  Label1.Text = "Waiting for SystemStatus load event..."
  ' the load event will not fire until you call this
  testlisten.Show() 
 End Sub
End Class