5

我一直在开发基于 c# 的 Windows 窗体应用程序,我需要一些帮助。当表单失去对父表单的焦点时,我正在尝试重新创建大多数 Windows 应用程序所具有的窗口闪烁。我可以解释的最好方法是打开计算器打开帮助窗口并尝试单击计算器,然后帮助窗口不落后于计算器闪烁丢失并获得边缘周围的阴影。

当单击父窗口时,我设法重新获得对子窗口的关注,但这会产生奇怪的闪烁效果,因为父窗口暂时被带到子窗口前面。我只是在猜测,但我正在寻找的效果似乎是计算器从未被带到帮助窗口前面,然后帮助窗口被简单地激活和停用几次。

我尝试进行一些搜索,并且看到了一些与此相关的主题,但没有一个解决方案完全匹配。我对制作 Windows 窗体应用程序还很陌生,所以还有一些我不明白的东西,所以如果我一开始不明白的话,请耐心等待。

先感谢您

计算器示例的详细说明:

1) 从 Windows 附件打开计算器 2) 在工具栏中转到帮助选项卡并打开关于计算器选项 3) 单击计算器窗口 4) 然后关于计算器窗口将闪烁,但不会落后于计算器

我在这方面取得的唯一进展是

    private void MainForm_Activated(object sender, EventArgs e)
    {
        if (Open == true)
        {
            //blink active window

            _addForm.Activate(); //makes window active
        }
    }

open 变量是我用来跟踪是否打开表单的东西,当我显示另一个表单时它是真实的。

4

2 回答 2

7

在您的示例中,关于窗口称为模式窗口。模态窗口会阻止用户与父窗口交互,直到它关闭。使用Form.ShowDialog而不是Form.Show将表单作为模式窗口呈现给用户。

于 2013-04-19T14:35:51.157 回答
0

制作子窗体modal。这意味着必须正确关闭子级,然后才能将焦点转移回父级。

于 2013-04-19T14:36:11.877 回答