C# 如何使我的登录表单在单独的线程中处于最顶端?
我目前有一个登录表单,当主应用程序启动时,它在一个单独的线程中启动。我尝试在登录表单上设置最顶层的属性,但仍然不起作用。我不想使用Application.Run方法,因为我正在处理几种类型的登录表单,我只是创建了一个接口。以下代码已简化:C# 如何使我的登录表单在单独的线程中处于最顶端?,c#,winforms,multithreading,topmost,C#,Winforms,Multithreading,Topmost,我目前有一个登录表单,当主应用程序启动时,它在一个单独的线程中启动。我尝试在登录表单上设置最顶层的属性,但仍然不起作用。我不想使用Application.Run方法,因为我正在处理几种类型的登录表单,我只是创建了一个接口。以下代码已简化: 更新:这是登录窗口的设计方式。我不能改变这个。这在Windows XP中起作用,但在Windows 7中不起作用。 private void FormLoad() { ParameterizedThreadStart threadStart = deleg
更新:这是登录窗口的设计方式。我不能改变这个。这在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();
}
使用线程是问题的原因。登录窗口与主窗口完全分离,它不会被ShowDialog()禁用。并且主线程一直在运行,因此用户所要做的就是将登录窗口移到一边以使用主窗口
不要使用线程,直接调用ShowDialog()。使用线程是问题的原因。登录窗口与主窗口完全分离,它不会被ShowDialog()禁用。并且主线程一直在运行,因此用户所要做的就是将登录窗口移到一边以使用主窗口
不要使用线程,直接调用ShowDialog()。我想你应该使用Pinvoke。你可以用它来做 这也可以用
干杯。我想你应该用Pinvoke。你可以用它来做 这也可以用
干杯。为什么您首先要在不同的线程上运行登录表单?登录过程需要一段时间。我们不希望阻止用户在不需要登录的应用程序的其他区域进行工作。为什么要首先在其他线程上运行登录表单?登录过程需要一段时间。我们不想阻止用户在不需要登录的应用程序的其他区域进行工作。这是登录窗口的设计方式。我不能改变这个。这在Windows XP中起作用,但在Windows 7中不起作用。这是一个程序员网站。我们改变事情。查找有关Win7兼容性问题的帮助的最佳位置是superuser.com这是登录窗口的设计方式。我不能改变这个。这在Windows XP中起作用,但在Windows 7中不起作用。这是一个程序员网站。我们改变事情。查找有关Win7兼容性问题的帮助的最佳位置是superuser.com。谢谢。SetWindowLong似乎大部分时间都在工作。我现在正在玩这个。谢谢你。SetWindowLong似乎大部分时间都在工作。我现在正在玩这个。