.net - 调用 UI 委托(delegate)会导致 UI 被隐藏

标签 .net multithreading user-interface delegates invoke

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

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

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

谢谢

最佳答案

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

(在您的主 UI 类中)

using (YourLoginForm f = new YourLoginForm()){

    YourLoginForm.Show(this)
}

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

关于.net - 调用 UI 委托(delegate)会导致 UI 被隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1620120/

相关文章:

.net - 适用于 .NET WCF、.NET CF、Android、Symbian 的跨平台 AES 加密

.net - 在桌面下打开和关闭 Windows 8 触摸键盘 tabtip

javascript - 在 .Net 中是否有更优雅的手工制作序列化 Javascript 的方法?

Java - RunnableFuture 和 SortProcessor

c++ - 使用 move 作为线程 vector 的自定义分配器

java - Swing 组件 - 禁用布局调整大小

c++ - 如何使用 eclipse 在 C 中构建 GUI? (我只想使用 C 而不是 JAVA)

.net - 在.NET Core中找不到ElasticSearch Nest客户端

c# - 锁定操作不起作用

c++ - 如何在C++和FLTK中实现倒计时时钟?