【问题标题】:Reacting to third-party application form events using vb.net使用 vb.net 响应第三方应用程序表单事件
【发布时间】:2013-09-05 03:58:13
【问题描述】:

我想知道我应该如何编写我的 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

在编程方面我还是个新手,所以也许这甚至不可能,或者我只是没有理解我一直在阅读的内容。无论如何,请告知我下一步应该采取的行动。

非常感谢,
理论

【问题讨论】:

  • 显示一些相关代码。
  • @DonA 有一些相关的代码。这足以让你现在帮助我吗?
  • 您需要显示类 ListeningForm 的实例化位置。请提供更多代码。
  • Program_A.SystemStatus 是表单还是类对象?
  • @DonA 哎呀,我想我超前了。我添加了其余的代码

标签: vb.net forms event-handling


【解决方案1】:

这将满足您的要求。

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

【讨论】:

  • 这确实有效,但我可能误导了你。我可能对我的目标采取了错误的方法。我最终设想的是 Program_B 在后台运行,而 Program_A 则在做这件事。在 Program_A 中加载 SystemStatus 表单(或任何指定的表单)的那一刻,我需要 Program_B 来查看 Program_A 中的事件并做出相应的反应。
  • 这两个程序都属于你吗?他们都属于同一个项目吗?
  • 从技术上讲,这两个程序确实属于我,因为我将它们创建为我的最终目标的测试平台。但是,实际上,当我将在这里学到的知识用于最终目标时,Program_A 不属于我,我只能更改 Program_B。不过,我可以使用 JustDecompile 来查看 Program_A。
  • 所以 Program_A 作为一个单独的实例 exe 运行,并且您希望 program_B 监听事件 - 然后不。另外,如果您不拥有或不拥有其中任何一项的权利,那么这可能是试图通过其措辞进行恶意行为。我们无法为此类工作提供帮助。
猜你喜欢
  • 1970-01-01
  • 2020-07-02
  • 1970-01-01
  • 1970-01-01
  • 2020-10-27
  • 1970-01-01
  • 2012-09-28
  • 2011-05-01
  • 1970-01-01
相关资源
最近更新 更多