gpt4 book ai didi

.net - 如何阻止 form.showdialog 在 DotNet 中锁定祖父窗体?

转载 作者:行者123 更新时间:2023-12-04 17:14:15 25 4
gpt4 key购买 nike

所以我的应用程序有一个菜单表单,我们称它为祖 parent 。用户单击一个按钮,它会调用另一个表单,我们称它为父表单,使用 form.show()。因为我使用的是 show() 而不是 showdialog(),所以我现在可以使用任何一种形式。

然后,在父表单中,我调用第三个表单,我们称它为子表单,使用 form.showdialog()。我希望用户在能够对父窗体执行任何操作之前必须关闭子窗体,而这正是发生的情况。问题是现在我也不能使用祖父窗体,它一直处于锁定状态,直到我关闭子窗体,而我不希望它被锁定。

换句话说,我希望子窗体是模态的,但只尊重父窗体,而不是祖 parent 窗体。这样的事情能做吗?

最佳答案

如果您可以接受这样一个事实,即您的父表单和子表单与您的祖 parent 表单存在于另一个线程上(因此当您需要在另一个线程上使用控件时您将不得不调用),您可以为您的表单启动第二个 UI 线程父表单 ...

当模态对话框阻塞父窗体UI线程的消息队列时,祖 parent UI线程仍然会有自己的非阻塞消息队列...

所以不用调用

new ParentForm().Show();

祖 parent 形式调用代码中的某处

new System.Threading.Thread(
delegate() {
Application.Run(new ParentForm());
}
).Start();

关于.net - 如何阻止 form.showdialog 在 DotNet 中锁定祖父窗体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6589059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com