'整个程序的入口
Public Shared Sub Main()
'显示登陆对话框
Dim loginFrm As frmlogin = New frmlogin
loginFrm.ShowDialog()
'合法用户进入系统
If loginFrm.bResult = True Then
Dim frm As Frmmain = New Frmmain
frm.UserName = loginFrm.UserName.Trim
frm.UserId = loginFrm.UserId.Trim
Application.Run(frm)
End If
'Application.Run(New frmMain)
End Sub
Private Function GetInstanceState(ByVal name As String) As Boolean
'获得frmMain窗体的子窗体的数量
Dim i As Integer = Me.MdiChildren.Length
'循环判断是否有名为name的子窗体实例
For i = 0 To Me.MdiChildren.Length - 1
If Me.MdiChildren(i).Name = name Then
'存在名为name的子窗体,是子窗体获得焦点并返回True
Me.MdiChildren(i).Focus()
Return True
End If
Next
'不存在名为Name的子窗体False
Return False
End Function
Private Function IsMDIChi(ByVal chiFormName As String) As Boolean
Dim chiForm As Form
For Each chiForm In Me.MdiChildren
If chiForm.Name = chiFormName Then
If chiForm.Visible Then
chiForm.Activate()
Else
chiForm.Show()
End If
Return True
End If
Next
Return False
End Function Private Sub mnReserve_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
If GetInstanceState("frmReserve") Then
Exit Sub
End If
Dim childFrm As frmreserve = New frmreserve
childFrm.MdiParent = Me
childFrm.Show()
End Sub
Private Sub mnusersinfo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
If GetInstanceState("frmusersinfo") Then
Exit Sub
End If
Dim childFrm As frmUsersInfo = New frmUsersInfo
childFrm.MdiParent = Me
childFrm.Show()
End Sub Private Sub mnyginfo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnyginfo.Click
If GetInstanceState("frmusersinfo") Then
Exit Sub
End If
Dim childFrm As frmUsersInfo = New frmUsersInfo
childFrm.MdiParent = Me
childFrm.Show()
End Sub
Private Sub Frmmain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim m, n As Integer
'记录窗体最大的高度和宽度
Me.WindowState = FormWindowState.Maximized
m = Me.Width
n = Me.Height
Me.WindowState = FormWindowState.Normal
Me.Width = m
Me.Height = n
Me.Left = 0
Me.Top = 0
tvwMain.Nodes(0).Expand()
StatusBarPanel3.Text = " " & Date.Today & " "
StatusBarPanel4.Text = " " & Now.Hour & "时" & Now.Minute & _
"分" & " " '激活窗体
Me.Activate()
End Sub
Private Sub frmMain_Resize(ByVal sender As Object, ByVal e As _
System.EventArgs) Handles MyBase.Resize
'调整功能树的大小和位置
tvwMain.Height = Me.Height - 120
tvwMain.Width = 230
tvwMain.Left = 0
tvwMain.Top = 42
Dim frm As Windows.Forms.Form
'调整各个子窗体的大小和位置
For Each frm In Me.MdiChildren
frm.Left = tvwMain.Width
frm.Width = Me.Width - tvwMain.Width - 12
frm.Height = Me.Height - 142
Next
End Sub Private Sub mnchangepwdinfo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnchangepwdinfo.Click
If GetInstanceState("frmchangepwdinfo") Then
Exit Sub
End If
Dim childFrm As frmchangepwdinfo = New frmchangepwdinfo
childFrm.MdiParent = Me
childFrm.Show()
End Sub
Private Function HowShowFrm(ByVal strFrmName As String) As Boolean
'strFrmName表示需要检查的窗体的名称
'返回True说明已有实例在运行
'返回False说明没有此窗体的实例运行
Dim i As Integer
'检查主窗体所有的子窗体
For i = 0 To Me.MdiChildren.Length - 1
'如果子窗体中有窗体名称和需要打开的窗体同名的
'说明已经由此窗体的实例在运行,此时显示这个实例即可
If Me.MdiChildren(i).Name = strFrmName Then
Me.MdiChildren(i).Focus()
'Me.MdiChildren(i).WindowState = FormWindowState.Maximized
Return True
Exit Function
End If
Next
'没有找到同名的窗体,则说明没有此窗体的实例在运行
Return False
End Function
Private Sub tvwMain_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles tvwMain.AfterSelect
Select Case tvwMain.SelectedNode.Text
Case "员工信息管理"
frmUsersInfoClick()
Case ""
'Item18Click()
Case "采购单"
' Item20Click()
Case "采购单统计"
'Item22Click()
Case "销售单"
' Item23Click()
Case "销售单统计"
' Item25Click()
Case "供应商资料维护"
' Item29Click()
Case "供应商资料查询"
'Item31Click()
Case "报损单"
' Item26Click()
Case "报损单统计"
'Item28Click()
End Select
End Sub Private Sub mnusersinfo_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnusersinfo.Click
frmUsersInfoClick()
End Sub
Private Sub frmUsersInfoClick()
If HowShowFrm("frmUsersInfo.vb") = True Then Exit Sub
Dim myfrm As New frmUsersInfo
myfrm.MdiParent = Me
myfrm.Show()
myfrm.Top = 0
myfrm.Left = 220
End Sub
Private Sub mnbackupandrestore_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnbackupandrestore.Click
If GetInstanceState("backupandrestore") Then
Exit Sub
End If
Dim childFrm As BackUpAndRestore = New BackUpAndRestore
childFrm.MdiParent = Me
childFrm.Show() End Sub
End Class
这是我主窗体的代码
但是不知道为什么运行就出现
未处理的“System.ArgumentException”类型的异常出现在 system.windows.forms.dll 中。其他信息: 被指定为此窗体的 MdiParent 的窗体不是 MdiContainer。
这样的错误
主窗体可以打开
但是单击页面的时候就出现这样的错误
有哪一个能帮我解决这个问题不 咯
小弟感激不尽。
Public Shared Sub Main()
'显示登陆对话框
Dim loginFrm As frmlogin = New frmlogin
loginFrm.ShowDialog()
'合法用户进入系统
If loginFrm.bResult = True Then
Dim frm As Frmmain = New Frmmain
frm.UserName = loginFrm.UserName.Trim
frm.UserId = loginFrm.UserId.Trim
Application.Run(frm)
End If
'Application.Run(New frmMain)
End Sub
Private Function GetInstanceState(ByVal name As String) As Boolean
'获得frmMain窗体的子窗体的数量
Dim i As Integer = Me.MdiChildren.Length
'循环判断是否有名为name的子窗体实例
For i = 0 To Me.MdiChildren.Length - 1
If Me.MdiChildren(i).Name = name Then
'存在名为name的子窗体,是子窗体获得焦点并返回True
Me.MdiChildren(i).Focus()
Return True
End If
Next
'不存在名为Name的子窗体False
Return False
End Function
Private Function IsMDIChi(ByVal chiFormName As String) As Boolean
Dim chiForm As Form
For Each chiForm In Me.MdiChildren
If chiForm.Name = chiFormName Then
If chiForm.Visible Then
chiForm.Activate()
Else
chiForm.Show()
End If
Return True
End If
Next
Return False
End Function Private Sub mnReserve_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
If GetInstanceState("frmReserve") Then
Exit Sub
End If
Dim childFrm As frmreserve = New frmreserve
childFrm.MdiParent = Me
childFrm.Show()
End Sub
Private Sub mnusersinfo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
If GetInstanceState("frmusersinfo") Then
Exit Sub
End If
Dim childFrm As frmUsersInfo = New frmUsersInfo
childFrm.MdiParent = Me
childFrm.Show()
End Sub Private Sub mnyginfo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnyginfo.Click
If GetInstanceState("frmusersinfo") Then
Exit Sub
End If
Dim childFrm As frmUsersInfo = New frmUsersInfo
childFrm.MdiParent = Me
childFrm.Show()
End Sub
Private Sub Frmmain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim m, n As Integer
'记录窗体最大的高度和宽度
Me.WindowState = FormWindowState.Maximized
m = Me.Width
n = Me.Height
Me.WindowState = FormWindowState.Normal
Me.Width = m
Me.Height = n
Me.Left = 0
Me.Top = 0
tvwMain.Nodes(0).Expand()
StatusBarPanel3.Text = " " & Date.Today & " "
StatusBarPanel4.Text = " " & Now.Hour & "时" & Now.Minute & _
"分" & " " '激活窗体
Me.Activate()
End Sub
Private Sub frmMain_Resize(ByVal sender As Object, ByVal e As _
System.EventArgs) Handles MyBase.Resize
'调整功能树的大小和位置
tvwMain.Height = Me.Height - 120
tvwMain.Width = 230
tvwMain.Left = 0
tvwMain.Top = 42
Dim frm As Windows.Forms.Form
'调整各个子窗体的大小和位置
For Each frm In Me.MdiChildren
frm.Left = tvwMain.Width
frm.Width = Me.Width - tvwMain.Width - 12
frm.Height = Me.Height - 142
Next
End Sub Private Sub mnchangepwdinfo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnchangepwdinfo.Click
If GetInstanceState("frmchangepwdinfo") Then
Exit Sub
End If
Dim childFrm As frmchangepwdinfo = New frmchangepwdinfo
childFrm.MdiParent = Me
childFrm.Show()
End Sub
Private Function HowShowFrm(ByVal strFrmName As String) As Boolean
'strFrmName表示需要检查的窗体的名称
'返回True说明已有实例在运行
'返回False说明没有此窗体的实例运行
Dim i As Integer
'检查主窗体所有的子窗体
For i = 0 To Me.MdiChildren.Length - 1
'如果子窗体中有窗体名称和需要打开的窗体同名的
'说明已经由此窗体的实例在运行,此时显示这个实例即可
If Me.MdiChildren(i).Name = strFrmName Then
Me.MdiChildren(i).Focus()
'Me.MdiChildren(i).WindowState = FormWindowState.Maximized
Return True
Exit Function
End If
Next
'没有找到同名的窗体,则说明没有此窗体的实例在运行
Return False
End Function
Private Sub tvwMain_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles tvwMain.AfterSelect
Select Case tvwMain.SelectedNode.Text
Case "员工信息管理"
frmUsersInfoClick()
Case ""
'Item18Click()
Case "采购单"
' Item20Click()
Case "采购单统计"
'Item22Click()
Case "销售单"
' Item23Click()
Case "销售单统计"
' Item25Click()
Case "供应商资料维护"
' Item29Click()
Case "供应商资料查询"
'Item31Click()
Case "报损单"
' Item26Click()
Case "报损单统计"
'Item28Click()
End Select
End Sub Private Sub mnusersinfo_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnusersinfo.Click
frmUsersInfoClick()
End Sub
Private Sub frmUsersInfoClick()
If HowShowFrm("frmUsersInfo.vb") = True Then Exit Sub
Dim myfrm As New frmUsersInfo
myfrm.MdiParent = Me
myfrm.Show()
myfrm.Top = 0
myfrm.Left = 220
End Sub
Private Sub mnbackupandrestore_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnbackupandrestore.Click
If GetInstanceState("backupandrestore") Then
Exit Sub
End If
Dim childFrm As BackUpAndRestore = New BackUpAndRestore
childFrm.MdiParent = Me
childFrm.Show() End Sub
End Class
这是我主窗体的代码
但是不知道为什么运行就出现
未处理的“System.ArgumentException”类型的异常出现在 system.windows.forms.dll 中。其他信息: 被指定为此窗体的 MdiParent 的窗体不是 MdiContainer。
这样的错误
主窗体可以打开
但是单击页面的时候就出现这样的错误
有哪一个能帮我解决这个问题不 咯
小弟感激不尽。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货