问题描述
我的项目中有 Main 和 Press Form,我试图在我的 Main FormPresstoolStripMenuItem_Click 事件/strong>从新闻表格刷新或重新加载新闻表格,但没有任何反应。先感谢您。这是我的代码:
Public Class frmPress
Dim main As New frmMain()
main.PresstoolStripMenuItem_Click(sender,e)
End Class
解决方法
你以完全错误的方式处理事情。
首先,永远不要尝试直接调用事件处理程序。如果您有要在多种不同情况下执行的代码,则将该代码放在其自己的方法中,然后从多个不同的地方调用该方法。无论您当前在菜单项的 Click
事件处理程序中有什么代码,请移至其自己的方法,然后从事件处理程序中调用它。然后,您也可以从任何其他需要调用的地方调用相同的方法。
不过,这不是您的主要问题。想想你发布的代码实际上做了什么。您已经在屏幕上显示了一个 frmMain
实例,对吗?如何创建一个新的 frmMain
实例(它就在您的代码中:New frmMain
)并调用其中的方法来帮助您对该现有实例执行某些操作?如果您想影响现有实例,那么您实际上已经调用了该现有实例的方法。有多种方法可以做到这一点。
假设 frmMain
是您的应用程序的启动表单,那么它就是其类型的默认实例。这意味着您可以采用简单的选项并使用默认实例来访问它。表单的默认实例是通过类型名称访问的。这意味着你可以这样做:
frmMain.SomeMethod()
其中 SomeMethod
是您根据上述建议编写的方法。
有更好的方法,但我不会在这里讨论。如果您想了解如何“正确”执行此操作,请查看我关于 here 主题的博客文章。第一部分是关于默认实例,第 2 部分和第 3 部分提供了更好的选项,尽管它们对初学者来说可能看起来很复杂。您还可以了解有关默认实例 here 的更多信息。