问题标签 [topmost]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
144 浏览

c# - 双击进度条后打开的窗口被立即拖入背景

我有一个非对话框窗口,在用户双击进度条后打开。

每次打开时,它都会短暂停留在前台,然后将其拖入后台(隐藏在主应用程序窗口的后面,即带有进度条的窗口)。

我想让它保持在顶部窗口,我不想让它成为最顶部的。

我该怎么做呢?

我在 WPF 4 和 c# 中写这个

0 投票
2 回答
1601 浏览

c# - 在没有 API 的情况下将已经打开的 winform 应用程序带到前面?

你好,

假设我们在后台运行了一个 WinForm 应用程序(app1),现在另一个应用程序(app2)(最上面的活动应用程序)触发了一个带有 app1 的 startProcess。

现在我需要 app1 使用现有实例并将其带到最顶层的应用程序(不仅在 app1 应用程序内)。

我发现了这个:http ://sanity-free.org/143/csharp_dotnet_single_instance_application.html

没有API就不可能做到这一点,这是真的吗?我看过 att BringToFront、Activate 和 Focus,但所有这些似乎只在应用程序内有效,而不在应用程序之间有效?

0 投票
1 回答
569 浏览

ui-automation - 如何使用 UIAutomation 验证窗口是最顶层的窗口?

我在许多论坛中搜索过解决方案,但他们都告诉我,如果窗口在顶部,则使用 WindowPattern 并检查最上面的值应该返回 true。然而,这对我来说不是这样。我正在测试一个位于 outlok 选项卡中的应用程序。然后,用户可以在应用程序中单击并打开一个新窗口。我想验证这个窗口是否在前台。另外..这是一个 WPF 应用程序,因此我无法为打开的新窗口获取单独的句柄。

谢谢

0 投票
1 回答
1743 浏览

c# - 新电子邮件锁定 Outlook,将电子邮件窗口强制为 topMost

我正在使用以下代码从 DataGridView 读取电子邮件地址,然后创建 Outlook 电子邮件。这完美地工作,除了新电子邮件设置为 topMost 和/或作为对话窗口打开,这意味着当新电子邮件窗口打开时,我无法在 Outlook 中单击或执行任何其他操作。如果我打开了我的新电子邮件并且我试图在我的收件箱中搜索或查找某些内容,这会出现问题。此外,在我关闭或发送电子邮件之前,我的应用程序不会响应(被锁定)。

有没有办法创建新电子邮件并仍然允许常规功能?如果我从 Outlook 本身单击新电子邮件按钮,我可以根据需要打开任意数量的电子邮件,使用搜索等。

this.TopMost = false条线是隐藏我的 WinForms 应用程序并在前面显示新的电子邮件窗口。

奇怪的是,如果我在电子邮件中写一些东西并关闭它,我可以保存它。如果我这样做,当我打开电子邮件备份时,它会返回到它的锁定状态。我开始认为这与电子邮件的创建方式有关,因此某些设置或属性正在被应用和保存。

0 投票
3 回答
4635 浏览

c# - 在所有其他控件之上绘制自定义控件(以前添加)

我有一个添加其他用户控件的用户控件,但我希望添加的“最新”控件位于最顶层,因此它高于其他控件。因为控件应该相互重叠。就像纸牌游戏一样。所以我添加了 5 个控件,第一个控件的优先级最低,最新的优先级最高 - 最明显。

有任何想法吗?

或者我是否必须覆盖“容器”控件的 Paint 方法?和 Control.CreateGraphics() 并绘制它?

0 投票
2 回答
1150 浏览

c# - Windows Form 整体绝对最大化

我有一个问题要绝对将我的窗口放在前面,但是当我启动一个打印对话框时,我无论如何都找不到将我的窗口放在前面:我必须将我的窗口放在打印对话框上执行 TopMost,但出现任务栏虽然是隐藏的。

我的表单窗口中的代码将其最大化并整体放置:

启动打印对话框的代码:

这是我隐藏任务栏的代码:

我尝试了这段代码,在“this.TopMost = true;”之后也在我的表单中调用了 SetWinFullScreen 最大化形式,但它也不起作用:

在所有情况下,当启动打印对话框时,会出现任务栏并且用户可以单击它,因为它位于所有内容的前面。

有没有办法在后台启动此打印对话框或将我的表单绝对放在最上面(不出现任何任务栏或对话框)?

编辑:问题出在这一行:

此行启动打印对话框,然后出现任务栏(隐藏或不隐藏)。

0 投票
4 回答
8097 浏览

c# - 如何查看我的表单当前是否位于其他表单之上?

基本上,我如何判断我的程序是否在所有其他程序之上?

0 投票
3 回答
3421 浏览

vb.net - 在屏幕顶部找到窗口的句柄

我想检查外部应用程序(在线扑克游戏桌)的窗口何时跳过所有其他窗口,因为轮到我玩了。

问题是游戏桌在前台跳转......但是窗口没有变得活跃......这意味着我无法检查它是否被API GetForegroundWindow 跳过所有其他可见窗口(以及在fatc此 API 继续返回前一个窗口的句柄,如果它位于跳过所有桌面窗口的游戏桌下)。GetTopWindow API 也不起作用。

现在的问题是:如何找到顶部可见窗口的句柄(在我的眼睛所有其他打开的窗口之上的窗口)如果它不活动?


不,该窗口不是 TopMost 窗口:事实上,如果我单击另一个窗口,它会进入后台。如果它应该是 TopMost 窗口,它将保持在顶部。

可能它被 WM_SHOW 或 WM_NOACTIVATE 标志放在前台。

0 投票
2 回答
267 浏览

c# - WFA 窗口在前面

我得到了一个带有 TreeView 的 WFA,MouseDoubleClick并向 treeviewItem 添加了一个事件。在代码中,事件处理程序会打开一个新窗口。

当我尝试这个和doubleClickTreeViewItem 时,它会打开窗口,但它不会停留在前面(它移动到 TreeView 所在的页面后面)

我尝试在事件处理程序中添加一个Topmost = true,但这不起作用。

有人有解决方案吗?

0 投票
1 回答
1041 浏览

vb.net - 显示模态对话框时,窗体在顶部但不可点击

我想要的是一个小的通知消息,当有任何消息要显示时,它会显示在右下角。如果没有,则不会显示通知消息。通知消息不应窃取焦点或阻塞主应用程序。

我所拥有的是一个将任务作为一种消息服务运行的应用程序。此应用程序包含多个作为模式对话框打开的对话框。

当消息到达应用程序时,它会被添加到可观察列表中。这会在显示通知消息的表单中触发一个事件处理程序,并重新绘制它以显示列表中的第一项。当一条消息被读取/关闭时,它会从再次触发事件的列表中删除,并使用列表中第一项的信息更新表单。如果列表为空,则隐藏表单。

我的问题是,如果我收到一条消息并显示通知消息表单,并且在我关闭它之前,在主应用程序中打开了一个模式对话框,我的通知消息表单仍然位于所有内容之上,甚至是模式对话框,但它不可点击。

我已经搜索并阅读了几个论坛以寻求答案,但一直未能找到答案。

可以在 Github 上找到一个模拟这种行为的小型测试应用程序。 https://github.com/Oneleg/NotificationMessage

一些快速信息:

NotificationMessage 表单具有:

  • FormBorderStyle = 无
  • 最顶层 = 假
  • 用 Show() 显示
  • 重载 ShowWithoutActivation()
  • 使用 WS_EX_NOACTIVATE WS_EX_TOOLWINDOW WS_EX_TOPMOST 重载 CreateParams

关于如何解决这个问题的任何想法?