枚举容器中的子窗体

BeyondTimeSpace 2008-05-17 02:54:10

我在ToolStripContainer中加载了一些窗体,想卸载它们时出现问题,因为.net中窗体是一个类,不被认为是窗体!!咋办?

    Private Sub ULoadSubFormAll()
Dim ctl As Control
For Each ctl In ToolStripContainer1.Controls
If (TypeOf (ctl) Is System.Windows.Forms.Form) Then '窗体已不再是窗体,而是一个类,咋办?
ToolStripContainer1.ContentPanel.Controls.Remove(ctl)
End If
Next

End Sub
...全文
80 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
BeyondTimeSpace 2008-06-11
  • 打赏
  • 举报
回复
谢谢各位热心回答,最近公司不许上网,没及时结贴,请给位见谅。

最后解决方案是使用一个单独的类进行管理。

To gyc:

  Public Sub LoadSubForm(ByVal frm As Form, ByVal ctlParent As Control)
frm.TopLevel = False 'Form类源于control类,因此有这个属性
frm.FormBorderStyle = Windows.Forms.FormBorderStyle.None
frm.Parent = ctlParent
frm.Dock = DockStyle.Fill
'frm.AutoSize = True
'frm.AutoSizeMode = AutoSizeMode.GrowAndShrink
ctlParent.AutoSize = True
frm.Show()
End Sub

Public Sub ULoadSubForm(ByRef frm As Form)
If frm IsNot Nothing Then
frm.Close()
End If
End Sub
gyc 2008-05-18
  • 打赏
  • 举报
回复
楼主怎么把窗体添加到 这个控件 里面来的?

另外,在MSDN上看到了这个
ToolStripContainer 不支持多文档界面 (MDI) 应用程序。ToolStripPanel 用于 MDI 应用程序。
bfblang 2008-05-17
  • 打赏
  • 举报
回复
定义控件或窗体就把前面的全部都写出来试一试。
System.Windows.Forms.Form
System.ToolStripContainer.Controls或System.ToolStripContainer.ContentPanel.Controls
BeyondTimeSpace 2008-05-17
  • 打赏
  • 举报
回复
.net中的窗体设计时是作为类设计的,在将它加入ToolStripContainer1.Controls的时候,提示隐式转换:( Class -----> System.Windows.Forms.Form ),于是来了个强制转换:

LoadSubForm(CType(frmLogin, Form))'加载时强制转换成Form,然后在卸载时就出现了上面的问题(找不到Form)




1.不明白.net中设计的窗体与System.Windows.Forms.Form 的不同
2.在窗体的.Designer.vb文件中看到了这样的语句:Inherits System.Windows.Forms.Form,说明它任然属于窗体类,但为什么卸载不掉呢?百思不得其解!!


至于itcoco说的定义成Form,就不对了,Form 是加在ToolStripContainer1.ContentPanel.Controls中的定义成Form会出错的。
itcoco 2008-05-17
  • 打赏
  • 举报
回复
定义有问题把,不应该定义成control 类,应该定义dim frm as System.Windows.Forms.Form把?

16,718

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧