我有一個程序用於運行不同的報告。根據選擇的菜單選項,我打開了基於菜單選項列出報告的相同表單。 (程序中也有不同的選項和功能,而不僅僅是一種形式)。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)說,然後當你關閉一個窗體時,它會得到處置。這就是爲什麼它不能第二次工作。您應該保持打開窗體或創建一個新實例。 –