SymbolMC50でCompactFramework3.5を使用しています。
私のサブメインでは、最初にデータベースが存在するかどうかを確認します。含まれている場合は、次のコードを使用してログイン画面が表示されます。
Dim login As frmLogin = New frmLogin()
If login.ShowDialog() = DialogResult.OK Then
Application.Run(New frmMain())
End If
これはすべて正しく機能し、frmMainを閉じると、期待どおりにアプリケーションを終了します。
ただし、サブメインでのデータベースチェックが失敗した場合は、ライブサーバーからデータベースを作成して入力するために使用される別のフォームのShowDialog()メソッドを呼び出します。このフォームを呼び出すためのコードは次のとおりです。
If Not File.Exists(SETTINGS_LOCALDB) Then
databaseExists = False
MessageBox.Show("Local DB does not exist. The database must be created before using the application.")
Dim update As frmUpdateData = New frmUpdateData()
update.ShowDialog()
Else
.....
End If
私が抱えていた最初の問題は、frmUpdateDataが閉じられたときに、サブメインの残りのコードが実行されていなかったため、Application.Runがヒットしなかったことです。
そのため、frmUpdateDataの[閉じる]ボタンのクリックイベントで、次のコードを追加しました。
If SystemUserSecurityId() = Nothing Then
Dim login As frmLogin = New frmLogin()
If login.ShowDialog() = DialogResult.OK Then
DebugTrace("Init - login complete, starting application.")
Application.Run(New frmMain())
End If
End If
Me.Hide()
このコードはすべてヒットしており、frmMainは実際にロードされます。ただし、右上の閉じるボタンをクリックしても何も起こらず、イベントも発生しません。Windowsイベントが発生していないかのようです。
私は何を間違えましたか?