我在form1中有一个打开form2的按钮。我使用frm2.show()
执行此操作。我第一次打开frm2时工作得很好,但当我关闭frm2并点击frm1中的按钮再次打开frm2时,我收到此错误:
有人能告诉我怎么解决吗?
编辑:我有一个模块,我有数据库连接和表单声明:
Public frmGame As New Game
Public frmPlay As New Play
Public frmFinish As New GameFinish
Public frmLogin As New Login
Public frmManage As New Manage
Public frmInsert As New Toevoegen
当我点击form1中的按钮时,我打开表单。
答案 0 :(得分:4)
听起来像你是关闭()ing frm2。关闭表单应该处理它并释放它的资源,所以你不能再简单地Show()它。相反,您需要创建对象的新实例,如下所示:
*
如果这不起作用(可能是因为您不想重新初始化表单的数据成员),您可以使用Hide()而不是Close()暂时隐藏程序执行期间的表单。
如果您需要阻止使用X按钮关闭表单,可以使用以下几种方法执行此操作:
最好的方法可能是隐藏或禁用关闭按钮。阅读This post以更好地了解如何做到这一点。
您可以在frm2内部或主窗口中使用FormClosing事件。在传入的FormClosingEventArgs对象上设置Cancel属性。这里的问题是,当您真正想要关闭表单时,需要提供一个额外的代码路径来关闭表单。 FormClosingEventArgs对象的CloseReason属性应该为您提供一种正确处理它的方法。毋庸置疑,这可能是最危险的做事方式,因为您需要在应用程序关闭时关闭此窗口,但您也有意阻止这种情况发生。
您可以在生成frm2的表单中捕获FormClosed事件,然后创建窗口的新实例。同样,您需要提供代码路径以允许窗口在应用程序关闭时关闭。
总之,方法1可能是最安全的。您可以在应用程序关闭时使用.Close()关闭窗口,但用户无法使用X按钮将其关闭。