失去焦点时窗口闪烁?

时间:2013-04-19 14:21:21

标签: c# windows winforms visual-studio-2012

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

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

我尝试过一些搜索,我看到了一些与此相关的主题,但没有一个解决方案非常匹配。我很擅长制作Windows应用程序,所以仍然有一些我不理解的东西,所以如果我一开始不理解的话,请耐心等待。

提前谢谢

详细说明计算器示例:

1)从windows配件打开计算器 2)在工具栏中转到帮助选项卡,然后打开about calculator选项 3)单击计算器窗口 4)然后,约计算器窗口将闪烁而不会落在计算器后面

我为此取得的唯一进展是

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

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

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

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:0)

让孩子成为modal。这意味着必须正确关闭孩子才能将焦点转移回父母。