无法关闭面板中嵌入的表单

时间:2014-06-19 12:20:16

标签: vb.net forms panel

我有一个问题真正开始在我的脑海里...... 我的应用程序有一个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()
...

我也尝试将我的表单声明为全局变量,但似乎仍无法关闭它。 表单有许多计时器事件,当表单关闭时会停止,但是,即使面板关闭,计时器事件仍在运行。似乎表单在后台仍处于活动状态。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

由于愚蠢的疏忽,我没有看到我用来处理所有控件并关闭表单的代码不在FormClosing事件中,而是在名为Close的命令按钮下。因此,我的结账程序从未被调用,因此计时器仍然活跃。

由于