我有一个程序用于运行不同的报告。根据选择的菜单选项,我打开了基于菜单选项列出报告的相同表单。 (程序中也有不同的选项和功能,而不仅仅是一种形式)。vb.net打开表格时无法访问处置对象
点击的菜单选项时,我的代码
Private Sub ReportsToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles ReportsToolStripMenuItem1.Click
FormLocation = "F_Legal"
FormName = "Legal"
PrepareForm(F_Select_Report)
End Sub 'ReportsToolStripMenuItem1_Click
以下位在哪里F_Select_Report形式是打开。
Private Sub PrepareForm(formName As Form)
Cursor = Cursors.WaitCursor
For Each Form In Me.MdiChildren
Form.Close()
Next
formName.MdiParent = Me
formName.Height = Me.Height
formName.Width = Me.Width
formName.Show()
Cursor = Cursors.Arrow
End Sub 'PrepareForm
这一位被调用,关闭所有其他打开的窗体,然后打开被调用的窗体。
也能正常工作在我第一次尝试打开一个形式,但在第二次尝试,我得到一个错误信息说
Cannot access a disposed object.
,然后在第三次尝试时,它再次打开表单。 我该如何解决这个问题?
非常感谢
你确定要使用'Me.MdiChildren'而不是'formName.MdiChildren'吗?尚未打开的表单不会有任何MDI儿童AFAIK。 –
是_F_Select_Report_表单的实例还是表单的类名称? – Steve
[文档](https://msdn.microsoft.com/en-us/library/system.windows.forms.form.close(v = vs.110).aspx)说,然后当你关闭一个窗体时,它会得到处置。这就是为什么它不能第二次工作。您应该保持打开窗体或创建一个新实例。 –