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

问题描述

我的项目中有 MainPress 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 的更多信息。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...