另一种形式调用MenuStrip的点击事件VB.Net
Calling click event of MenuStrip in another form VB.Net
我的项目中有 Main 和 Press Form,我试图调用 PressToolStripMenuItem_Click 我的 Main Form 事件从 Press Form 到 refresh 或 reload 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
我的项目中有 Main 和 Press Form,我试图调用 PressToolStripMenuItem_Click 我的 Main Form 事件从 Press Form 到 refresh 或 reload 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