将表单窗口置于应用程序的顶部,而不是在所有应用程序之上

时间:2014-08-12 06:03:57

标签: c# winforms topmost

我有一个出现在计时器上的无模式单例形式。

如果表单所属的应用程序是活动应用程序但表单不在顶部,我希望表单显示在应用程序的所有其他窗口之上。如果用户再点击它以将其推到应用程序的其他窗口后面,则由用户决定。

如果表单所属的应用程序不是活动应用程序,那么我希望任务栏图标闪烁(这是有效的),并且我希望表单只显示在该应用程序中的所有其他应用程序之上,因此当用户回到它,它是由他们来处理。

我尝试过使用form.BringToFront()form.TopMost = true; form.TopMost = false;,但这两种解决方案都将表单带到了所有应用程序的顶层。如果他们在其他计划中工作,我不想惹恼我的用户。

有没有办法达到我想要的目的?

表格激活功能:

    public static RemindersList CreateInstance(List<Reminder> rs)
    {
        if (_singleton == null)
        {
            _singleton = new RemindersList(rs);
            _singleton.Activate();
            _singleton.TopMost = true;
            _singleton.TopMost = false;
            // Flash in taskbar if not active window
            FlashWindow.Flash(_singleton);
            return _singleton;
        }
        else
        {
            _singleton.TopMost = true;
            _singleton.TopMost = false;
            // Flash in taskbar if not active window
            FlashWindow.Flash(_singleton);
            return null;
        }
    }

1 个答案:

答案 0 :(得分:0)