Dim isValidUser as Boolean ' Global variable
Private Sub backgroundWorker1_DoWork( _
ByVal sender As Object, _
ByVal e As DoWorkEventArgs) _
Handles backgroundWorker1.DoWork
isValidUser = CheckInDataBase(Username,Pass)
End Sub
Private Sub backgroundWorker1_RunWorkerCompleted( _
ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs) _
Handles backgroundWorker1.RunWorkerCompleted
frmProcessing.Close()
If isValidUser then
msgbox("Welcom")
else
msgbox("Invalid Pswd")
End IF
End Sub
在RunWorkerCompleted
方法frmProcessing.close()
中,此时frmProcessing
表单未关闭...它会在回复frmProcessing
后关闭msgbox
。 ..为什么会发生这种情况...注意:frmProcessing
可以作为模态对话框显示...请帮助我
答案 0 :(得分:0)
原因是您在要关闭的表单上显示一条消息,因此它将等待消息框首先响应然后它将关闭。如果你想关闭并生成一个消息框,那么你应该这样做:(我假设你的要求是背景工作者属于frmProcessing形式)
FrmMain代码:(假设这是frmProcessing
)的所有者形式
Dim frmProcessing as new SomeProcessingFormName()
If (frmProcessing.ShowDialog() = DialogResult.OK) Then
msgbox("Welcom")
Else
msgbox("Invalid Pswd")
End If
FrmProcessing代码:
Public isValidUser as Boolean ' Global variable OR make it a property
Private Sub backgroundWorker1_DoWork( _ ByVal sender As Object, _ ByVal e As DoWorkEventArgs) _ Handles backgroundWorker1.DoWork
isValidUser = CheckInDataBase(Username,Pass)
End Sub
Private Sub backgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs) Handles backgroundWorker1.RunWorkerCompleted
frmProcessing.Close()
If isValidUser then
Me.DialogResult = DialogResult.Ok
else
Me.DialogResult = DialogResult.Cancel
End If
End Sub