現在、メイン アプリケーションの起動時に別のスレッドで起動されるログイン フォームがあります。ログイン フォームで TopMost プロパティを設定しようとしましたが、それでも機能しません。いくつかの種類のログイン フォームを扱っており、インターフェイスを作成するだけなので、Application.Run メソッドは使用したくありません。以下のコードは簡略化されています。
更新: これは、ログイン ウィンドウが設計された方法です。これを変更することはできません。これは Windows XP では機能しましたが、Windows 7 では機能しません。
private void FormLoad()
{
ParameterizedThreadStart threadStart = delegate {
BeginLogin(_loginResults);
};
var thread = new Thread(threadStart);
thread.Start();
}
private void BeginLogin(LoginResults callback)
{
LoginData loginData = GetLoginData();
if (callback != null)
callback(loginData);
}
private LoginData GetLoginData()
{
ILoginForm loginForm = LoginFormCreate();
loginForm.TopMostDialog = true; // This property sets the TopMost property.
return loginForm.ShowLoginDialog();
}