将窗体窗口置于应用程序的顶部,而不是置于所有应用程序的顶部

本文关键字:应用程序 顶部 于所 窗口 窗体 | 更新日期: 2023-09-27 18:17:38

我有一个出现在计时器上的非模态单例表单。

如果窗体所属的应用程序是活动应用程序,但窗体不在顶部,我希望该窗体显示在该应用程序的所有其他窗口的顶部。这取决于用户是否点击它,将其推到应用程序的其他窗口后面。

如果表单所属的应用程序不是活动应用程序,那么我希望任务栏图标闪烁(这正在工作),并且我希望表单仅在该应用程序中显示在所有其他应用程序的顶部,因此当用户返回它时,它在那里供他们处理。

我尝试过使用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;
        }
    }

将窗体窗口置于应用程序的顶部,而不是置于所有应用程序的顶部

如何使用NotifyIcon?

http://msdn.microsoft.com/en-us/library/system.windows.forms.notifyicon.aspx