将表单窗口带到应用程序的顶部而不是所有应用程序的顶部[重复]

Posted

技术标签:

【中文标题】将表单窗口带到应用程序的顶部而不是所有应用程序的顶部[重复]【英文标题】:Bringing a form window to the top of the application without being on top of all applications [duplicate] 【发布时间】:2014-08-12 06:03:56 【问题描述】:

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

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

如果表单所属的应用程序不是活动应用程序,那么我希望任务栏图标闪烁(这是有效的),并且我希望表单仅出现在该应用程序中的所有其他应用程序之上,所以当用户回到它,它就在那里供他们处理。

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

【问题讨论】:

在创建和启动子窗体时,是否在 Show() 方法中指定了“所有者”?我认为这有帮助。 我今天早些时候刚刚回答了一个与此非常相似的问题。但看起来你不是那个问那个的人。关键是 Rennie 已经说过的:将无模式对话框的 owner 设置为应用程序的主窗体。 【参考方案1】:

使用 NotifyIcon 怎么样?

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

【讨论】:

以上是关于将表单窗口带到应用程序的顶部而不是所有应用程序的顶部[重复]的主要内容,如果未能解决你的问题,请参考以下文章

scrollIntoView 将我带到页面顶部而不是底部

WKWebView goBack 将我带到本地 html 页面的顶部

Facebook sdk:登录屏幕出现在弹出窗口中,而不是连接 Facebook 应用程序

分组窗口在窗口列表中显示脚本名称而不是标题

将无边界的摆动窗口带到前面

如何将视图带到 UIView 层次结构的顶部