无法将类型 'System.EventArgs' 的对象转换为类型 'System.Windows.Forms.FormClosingEventArgs'

Unable to cast object of type 'System.EventArgs' to type 'System.Windows.Forms.FormClosingEventArgs'

我遇到了这个问题(虽然这个问题已经在这里提出但没有回答)。 我打算从 exitmenustrip_click 事件中调用 formclosing 事件,但出现此错误 "Unable to cast object of type 'System.EventArgs' to type 'System.Windows.Forms.FormClosingEventArgs'." 请我需要帮助。下面是我的代码

     Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click

    cashsalesForm_FormClosing(ExitToolStripMenuItem, e) '<-ERROR shows here

End Sub

    Private Sub cashsalesForm_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    //some codes here
End Sub

关于具体问题,第二个方法有一个FormClosingEventArgs类型的参数,所以如果你调用它,你需要传递一个该类型的对象。您正在传递 EventArgs 类型的对象。名称不同的事实是它们不相同的线索。前者继承了后者,因此它具有所有相同的功能以及一些额外的功能。当您调用需要它的方法时,不能凭空想出这种额外功能。

关于根本问题,您没有直接调用事件处理程序。如果您有一个应该关闭表单的菜单项,那么您可以在 Click 事件处理程序中调用表单的 Close 方法。然后表单将引发其 FormClosing 事件,第二个事件处理程序将被执行。这就是它的工作原理:事件处理程序用于处理事件。