我在VS-2008中创建了两个表单,login_F和switchBoard_F
。 login_F
是用户的登录表单,用于验证用户的登录信息,然后从函数中打开witchBoard_F
:
每当login_F
关闭时,它也会关闭switchBoard_F
。我希望s witchBoard_F
始终处于打开状态并关闭login_F
,但在关闭switchBoard_F
时,我不知道哪个代码正在关闭login_F
?< / p>
这是代码:
Private Sub SaveUSerInfo()
Dim cmd As New SqlCommand("sp_InsertLogReg", conn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add(New SqlParameter("@EmpID", My.Settings.UserID))
cmd.Parameters.Add(New SqlParameter("@sHostName", System.Net.Dns.GetHostName()))
cmd.Parameters.Add(New SqlParameter("@sUserName", System.Environment.UserName()))
cmd.Parameters.Add(New SqlParameter("@ApplicationName", My.Settings.gAppName))
'cmd.ExecuteNonQuery()
Dim newID As Integer = CInt(cmd.ExecuteScalar()) 'return LogRegID
'get UserGroup
Dim strSQL As String = "SELECT tblKOCEmp.EmpID, tblKOCEmp.Name, tblOrg.GroupName, tblOrg.Active"
strSQL = strSQL + " FROM tblKOCEmp "
strSQL = strSQL + " INNER JOIN tblOrg ON dbo.tblKOCEmp.OrgCode = dbo.tblOrg.OrgCode"
strSQL = strSQL + " WHERE (dbo.tblOrg.Active = 1)"
strSQL = strSQL + " AND (tblKOCEmp.EmpID =" + My.Settings.UserID + ")"
cmd = New SqlCommand(strSQL, conn)
cmd.CommandType = CommandType.Text
Dim dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)
If dr.HasRows Then
While dr.Read
If Not IsDBNull(dr.Item("Name")) Then
My.Settings.UserName = (dr.Item("Name"))
My.Settings.GroupName = (dr.Item("GroupName"))
End If
End While
End If
dr.Close()
My.Settings.LogRegID = newID 'store LogRegID to mySettings
switchBoard_F.Show()
login_F.Close()
End Sub
答案 0 :(得分:0)
我对你的案子不太确定..但我认为你可以将switchBoard_F
表格作为主要表格。
当您拨打login_F
表单时,您可以隐藏主表单..因此,当用户输入正确的密码时,您只需关闭login_F
表单..如果没有,您可以关闭它们..
答案 1 :(得分:0)
您应该使用switchBoard_F.ShowDialog();
代替switchBoard_F.Show();
。
顺便说一句: 除非在项目属性
中设置不同,否则关闭主窗体将始终导致关闭应用程序答案 2 :(得分:0)
确保登录第二个表单不是父表单
或者您可以使用loginform.hide和第二种形式的onclosing事件,secondform.close