1

假设我有线程 1,主窗口 UI 线程和线程 2,一个模式形式的登录 UI 线程。

现在线程 1 执行一段代码并想要更改登录表单中的 UI 元素,因此它调用委托来更改线程 2 中的某些内容。但是当它这样做时,登录表单将隐藏在主窗口后面,并且没有办法让我把它带回来。在任务栏上选择它不会做任何事情,并且在调用方法的末尾写“Activate()”也不会做任何事情。

如何防止线程 2 的 UI 被隐藏?

谢谢

4

2 回答 2

5

调用更新主窗口后,在登录表单上调用Focus() 。此外,当您显示登录表单时,将其父窗口设置为主窗口可能会有所帮助。

(在您的主 UI 类中)

using (YourLoginForm f = new YourLoginForm()){

    YourLoginForm.Show(this)
}

另一种方法可能是使用ShowDialog()而不是Show(),并让您的登录表单根据登录是否成功返回不同的DialogResult 。ShowDialog() 应该自动将您的登录表单设置为模态并具有焦点。

于 2009-10-25T05:56:12.710 回答
0

哇....自我pwn。k,消失的第二个窗口的事情是一个非问题

但是评论中的问题仍然存在......当我在第二个线程中执行 ShowDialog 时,如何防止新窗口与主窗口分开运行?即我不希望用户在第二个窗口后面时最小化主窗口。如果另一个程序出现在顶部并隐藏所有内容,则单击任务栏中的主窗口图标必须调出第二个窗口,依此类推

于 2009-10-25T06:16:54.900 回答