xst*_*ter 1 .net user-interface multithreading delegates invoke
假设我有线程1,主窗口UI线程和线程2,一个模态形式的登录UI线程.
现在,线程1执行一段代码,并希望更改登录表单中的UI元素,以便调用委托来更改线程2中的某些内容.但是当它这样做时,登录表单将隐藏在主窗口后面,并且没有办法让我把它带回来.在任务栏上选择它并没有做任何事情,并且在调用方法的末尾写"Activate()"也没有做任何事情.
如何保持线程2的UI不被隐藏?
谢谢
在调用更新主窗口后,在登录表单上调用Focus().此外,当您显示登录表单的父窗口时,它可能有助于将其作为主窗口.
(在你的主UI类中)
using (YourLoginForm f = new YourLoginForm()){
YourLoginForm.Show(this)
}
Run Code Online (Sandbox Code Playgroud)
另一种方法可能是使用ShowDialog()而不是Show(),并使您的登录表单返回不同的DialogResult,具体取决于登录是否成功.ShowDialog()应自动将您的登录表单设置为模态并具有焦点.