在另一个窗体VB.Net中调用菜单单击事件

在另一个窗体VB.Net中调用菜单单击事件,vb.net,menustrip,Vb.net,Menustrip,我的项目中有Main和Press Form,我试图从Press Form调用PressToolStripMenuItem\u单击Main Form中的事件来刷新或重新加载Press Form,但什么也没有发生。先谢谢你。这是我的密码: Public Class frmPress Dim main As New frmMain() main.PressToolStripMenuItem_Click(sender, e) End Class 你在用完全错误的方式做事 首先,不要试图直接

我的项目中有MainPress Form,我试图从Press Form调用PressToolStripMenuItem\u单击Main Form中的事件来刷新或重新加载Press Form,但什么也没有发生。先谢谢你。这是我的密码:

Public Class frmPress

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

End Class

你在用完全错误的方式做事

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

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

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

frmMain.SomeMethod()
其中
SomeMethod
是您根据上述建议编写的方法


有更好的方法,但我在这里不赘述。如果你想学习如何“正确地”做到这一点,请查看我关于这个主题的博客文章。第一部分是关于默认实例的,第2部分和第3部分提供了更好的选项,尽管它们对初学者来说可能很复杂。您还可以了解有关默认实例的更多信息。

谢谢您明确的解释,我已经解决了我的问题。