给你一段我的代码参考。是用vb.net写的。
这段代码用“标题画面”来输入登录用户名和密码,图片做得漂亮一些就可以了。
用返回的DialogResult决定是否加载主窗体。
在模块中写:
Public Sub Main()
Dim tmpLogin As New frmLogin()
tmpLogin.StartPosition = FormStartPosition.CenterScreen
Dim ret As DialogResult '= DialogResult.OK '= tmpLogin.Showdialog
'这样导致第二次的Application.Run(gMDIMain)不能驻留窗体。 Application.Run(tmpLogin)
ret = tmpLogin.ShowDialog()
' ret = DialogResult.OK
' ret = tmpLogin.DialogResult
tmpLogin.Dispose()
tmpLogin = Nothing
Select Case ret
Case DialogResult.OK
gMDIMain = New MDIMain()
Application.Run(gMDIMain)
Case DialogResult.Cancel
Exit Select
Case Else
MsgBox("?????????")
Exit Select
End Select
End Sub
注意,在frmLogin中打开数据连接。
这跟你的要求不一致。但是我认为,除了很小的程序或者单机程序及游戏之外,现在做的管理系统都要求系统先检测用户名和密码,所以“标题画面”实际就成了登录界面。
如果你的程序不需要登录,则可在“标题画面”显示的同时,后台调用主窗体的初始化过程,例如用多线程。大概的例子如下:
(“标题画面”中的代码)
Private Sub OpenConnectionOnNewThread()
Dim myThreadStart As New Threading.ThreadStart(AddressOf Me.DoNewThread) '应该是表示此线程开始后执行哪一个过程。
Dim MyWorkerThread As New Threading.Thread(myThreadStart)
MyWorkerThread.Name = "新线程"
MyWorkerThread.Start()
End Sub
Private Sub DoNewThread()
Dim CurrentThread As Threading.Thread = Threading.Thread.CurrentThread
Dim Message As String = _
"Thread Name: " + CurrentThread.Name + vbCrLf + _
"Thread Apartment State: " + CurrentThread.ApartmentState.ToString() + vbCrLf + _
"Thread State: " + CurrentThread.ThreadState.ToString()
Console.WriteLine(Message)
'如果无需登录,则在这里调用你的主窗体的初始化过程!
’……
End Sub
这段代码用“标题画面”来输入登录用户名和密码,图片做得漂亮一些就可以了。
用返回的DialogResult决定是否加载主窗体。
在模块中写:
Public Sub Main()
Dim tmpLogin As New frmLogin()
tmpLogin.StartPosition = FormStartPosition.CenterScreen
Dim ret As DialogResult '= DialogResult.OK '= tmpLogin.Showdialog
'这样导致第二次的Application.Run(gMDIMain)不能驻留窗体。 Application.Run(tmpLogin)
ret = tmpLogin.ShowDialog()
' ret = DialogResult.OK
' ret = tmpLogin.DialogResult
tmpLogin.Dispose()
tmpLogin = Nothing
Select Case ret
Case DialogResult.OK
gMDIMain = New MDIMain()
Application.Run(gMDIMain)
Case DialogResult.Cancel
Exit Select
Case Else
MsgBox("?????????")
Exit Select
End Select
End Sub
注意,在frmLogin中打开数据连接。
这跟你的要求不一致。但是我认为,除了很小的程序或者单机程序及游戏之外,现在做的管理系统都要求系统先检测用户名和密码,所以“标题画面”实际就成了登录界面。
如果你的程序不需要登录,则可在“标题画面”显示的同时,后台调用主窗体的初始化过程,例如用多线程。大概的例子如下:
(“标题画面”中的代码)
Private Sub OpenConnectionOnNewThread()
Dim myThreadStart As New Threading.ThreadStart(AddressOf Me.DoNewThread) '应该是表示此线程开始后执行哪一个过程。
Dim MyWorkerThread As New Threading.Thread(myThreadStart)
MyWorkerThread.Name = "新线程"
MyWorkerThread.Start()
End Sub
Private Sub DoNewThread()
Dim CurrentThread As Threading.Thread = Threading.Thread.CurrentThread
Dim Message As String = _
"Thread Name: " + CurrentThread.Name + vbCrLf + _
"Thread Apartment State: " + CurrentThread.ApartmentState.ToString() + vbCrLf + _
"Thread State: " + CurrentThread.ThreadState.ToString()
Console.WriteLine(Message)
'如果无需登录,则在这里调用你的主窗体的初始化过程!
’……
End Sub
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货