gpt4 book ai didi

c# - 获取当前消息框

转载 作者:太空宇宙 更新时间:2023-11-03 14:09:56 24 4
gpt4 key购买 nike

我有一个包含多个表单的大型应用程序,它们中的任何一个都可以获得模态并锁定表单的 MessageBox (MessageBox.Show())。

在激活另一个表单时,我现在需要找到这个 MessageBox 并将具有这个 MessageBox 的表单放在前面。有什么办法可以检查吗?

我知道 Application.OpenForms 属性,也许 MessageBox 有这样的东西?

Edit1 : 比如我们打开了Winform1,那么Winform1中的一个事件会转到打开Winform2的mainController。 Lateron Winform1 正在获取 MessageBox.Show,但完全有可能将 Winform2 置于最前面(在 Winform1 之上)。所以现在我需要对 Winform.Activated 使用react,检查是否有任何 MessageBox.Show,如果有,将这个包含 MessageBox 的表单放在前面。

最佳答案

您可以使用 Application.OpenForms 找到它们像这样:

foreach (Form f in Application.OpenForms)
{
if (f.Visible && ! f.CanFocus)
{
// whatever...
}
}

或者:完全使用不同的方法:

让你所有的表单处理Application.EnterThreadModalApplication.LeaveThreadModal ,这样当应用程序进入模态而该表单是当前的时,您将该表单添加到列表中以便您可以跟踪它,并在它离开模态时将其从列表中删除...

然后您需要做的就是查询该列表以查看是否有任何表单打开了模式对话框。

关于c# - 获取当前消息框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8164175/

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