十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这样的话你就不要直接把子窗口show出来,先在父窗口创建一个子窗口对象的变量,通过实例化该变量达到创建子窗口的目的,然后在下次又要打开子窗口时也可以通过该变量关闭原有的子窗口
成都创新互联专业为企业提供涿鹿网站建设、涿鹿做网站、涿鹿网站设计、涿鹿网站制作等企业网站建设、网页设计与制作、涿鹿企业网站模板建站服务,10年涿鹿做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
示例代码如下(假设Form1为父窗口,Form2为子窗口):
Form1的代码:
Public
Class
Form1
Dim
nform
As
Form2
=
Nothing
Private
Sub
Button1_Click(ByVal
sender
As
System.Object,
ByVal
e
As
System.EventArgs)
Handles
Button1.Click
If
nform
IsNot
Nothing
Then
nform.Close()
nform.Dispose()
End
If
nform
=
New
Form2
nform.Show()
Me.Hide()
End
Sub
End
Class
通过nform变量,你可以很轻易就处理掉原来已经打开但隐藏着的子窗口了
直接添加一个MID父窗体或在已有窗体的属性中找到IsMDIContainer属性,然后设置为True,然后创建第二个窗体 ,需要加载子窗体的时候:
Dim NewMDIChild As New Form2
NewMDIChild.MdiParent = Me
NewMDIChild.Show()
Public Shared Sub CheckMDIChildForm(ByVal MDIForm As Windows.Forms.Form, ByVal MDIChildForm As Windows.Forms.Form, ByVal MDIChildFormName As String)
If MDIForm.MdiChildren.Length 1 Then
'如果没有任何一个MDI子窗体,则创该MDI子窗体的窗体实例
Dim MDIChildFrm As Windows.Forms.Form = MDIChildForm ' 定义MDI子窗体
MDIChildFrm.MdiParent = MDIForm '指定父窗体
MDIChildFrm.Show() '打开窗体
Exit Sub
Else
Dim x As Integer
Dim frmyn As Boolean
For x = 0 To (MDIForm.MdiChildren.Length) - 1
Dim tempChild As Windows.Forms.Form = CType(MDIForm.MdiChildren(x), Windows.Forms.Form)
If tempChild.Name = MDIChildFormName Then
'检测到有该MDI子窗体,设为激活 并退出循环
frmyn = True
tempChild.BringToFront()
Exit For
Else
frmyn = False
End If
Next
If Not frmyn Then
'在打开的窗体中没检测到则新建
Dim MDIChildFrm As Windows.Forms.Form = MDIChildForm ' 定义MDI子窗体
MDIChildFrm.MdiParent = MDIForm '指定父窗体
MDIChildFrm.Show() '打开窗体
End If
End If
End Sub
很简单
菜单的代码可以这样,不会重复打开,第一点击的时候弹出窗体,下次打开就最大化:
If F1.Visible = True Then
F1.WindowState = FormWindowState.Maximized
Else
F1.Show()
End If
加载内容本身与是否子窗体没有关系。
请你检查一下你加载的内容是不是存在。
下面代码,不管是否子窗体,都是正常的:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ComboBox1.Items.Add("123")
ComboBox1.Items.Add("223")
ComboBox1.SelectedIndex = 0
End Sub
你可以下载附件参考一下!
要在VB.NET中清屏已经不再是象是在VB6中那么简单使用一条Cls就能搞定的,因为现在的VB.NET已经是完全面向对象的语言了,方法就不能和以前那样了,下面给出清空窗体的源代码,通过单击按钮清空,如下:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim g As Graphics
g = Me.CreateGraphics
g.Clear(Me.BackColor)
g.Dispose()
'释放对象g所占用的资源
End Sub
OK,程序已经成功实现你要的功能,运行环境VS.NET2003+Windows 2003 Server
欢迎你加入群:30538950进行交流!