2
我有一個問題真的開始在我的頭... 我的應用程序有一個用項目填充的ListView控件。當你雙擊一個項目時,它會創建一個表單的新實例。然後創建一個新面板並將該表單添加到面板。然而,在我的生活中,我無法弄清楚如何在面板內部關閉窗體。無法關閉嵌入在面板中的表格
在我的DoubleClick事件:
Dim frm As New frmStorePage(_store.Code, _store.Name)
'Create a new panel with the store page
Dim pnl As New Panel
pnl.Name = _store.Code
pnl.BackColor = SystemColors.Control
pnl.Size = New Size(1522, 892)
pnl.Location = New Point(3, 3)
frm.TopLevel = False
frm.Name = _store.Code
pnl.Controls.Add(frm)
frm.Show()
pnlStores.Controls.Add(pnl)
pnl.BringToFront()
...
在我的關閉事件:
Dim panel As Panel = CType(pnlStores.Controls.Find(lsvOpenStoreList.SelectedItems(0).Name, False)(0), Windows.Forms.Panel)
For Each control As Control In panel.Controls
If TypeOf control Is Windows.Forms.Form And control.Name = panel.Name Then
control.Dispose()
End If
Next
pnlStores.Controls.Remove(panel)
panel.Dispose()
pnlStoreList.BringToFront()
...
我也曾嘗試宣告我的形式作爲一個全局變量,但似乎仍不能將其關閉。 窗體關閉時會停止一些計時器事件,但即使面板關閉,計時器事件仍在運行。看起來這個表格在後臺仍然很活躍。
任何幫助,將不勝感激。
在用VB編程16年,我不知道你可以添加一個窗體到面板!但是,你有沒有嘗試在處置之前調用'ctype(control,form).close'方法?我會認爲處置會這樣做,但在這種情況下顯然不會。 – Steve
謝謝史蒂夫,但不是 - 不幸的是沒有把它排序。我可以告訴這個表單仍在運行,因爲我將Timer.Stop事件附加到窗體close方法。其中一個計時器每次執行時都給我一個錯誤,當我關閉面板/窗體時,我仍然從計時器中獲得這個錯誤彈出窗口。 – Riples
我無法重現您的問題。我做了一些代碼在面板中放置一個表單(帶有啓動時的計時器,當關閉時停止計時),並且只要顯示錶單,它就運行我的計時器,當我告訴表單關閉時,它停止運行它。我使用了你提供的大部分代碼,所以它必須是別的東西,不在這裏。 – Steve