另一种形式调用MenuStrip的点击事件VB.Net

Calling click event of MenuStrip in another form VB.Net

我的项目中有 MainPress Form,我试图调用 PressToolStripMenuItem_Click 我的 Main Form 事件从 Press Formrefreshreload Press Form 但没有任何反应。先感谢您。这是我的代码:

Public Class frmPress

  Dim main As New frmMain()
  main.PressToolStripMenuItem_Click(sender, e)

End Class

你做事的方式完全错误。

首先,永远不要尝试直接调用事件处理程序。如果您有要在多种不同情况下执行的代码,请将该代码放在它自己的方法中,然后从多个不同的地方调用该方法。无论您当前在菜单项的 Click 事件处理程序中有什么代码,请移至它自己的方法,然后从事件处理程序中调用它。然后,您也可以从任何需要的地方调用相同的方法。

但这不是您的主要问题。想一想您 post 编写的代码实际上做了什么。您已经在屏幕上显示了 frmMain 的实例,对吗?如何创建一个新的 frmMain 实例(它就在您的代码中:New frmMain)并调用其中的方法来帮助您对现有实例执行某些操作?如果您想影响现有实例,那么您实际上已经调用了该现有实例的方法。有多种方法可以做到这一点。

假设 frmMain 是您的应用程序的启动表单,那么它就是其类型的默认实例。这意味着您可以选择简单的选项并使用默认实例来访问它。通过类型名称访问表单的默认实例。这意味着您可以这样做:

frmMain.SomeMethod()

其中 SomeMethod 是您根据上面提供的建议编写的方法。

有更好的方法,但我不会在这里详细介绍。如果您想了解如何“正确地”执行此操作,请查看我关于主题 here. The first part is about default instances and parts 2 and 3 provide better options, although they may seem complex to a beginner. You can also learn more about default instance here.

的博客 post