C#设置一个像TopMost一样的表单,但是其他窗口始终可以进行交互

时间:2017-08-10 13:47:59

标签: c# window overlay

enter image description here

这是Form的屏幕截图。它基本上只是屏幕顶部的那两行,当你将它们悬停时,会弹出这个小窗口。我只是想知道这两行可能是什么。

我没有在互联网上找到任何关于如何实现熟悉的信息。我只是想知道背后的想法,也许一些示例代码可以很好地说明这个想法。

这只是某种自定义窗口吗? WPF可能是那样的方式吗?如果是这样,如何设置Form始终可见且可用(不需要点击Form以获得焦点以便能够与之交互),即使它可以&# 39; t设置为TopMost Form

this.TopMost = true;

因为我仍然可以与其他窗口交互,而两行自定义窗体仍然可见并覆盖所有其他窗口。但在任何情况下,两行自定义表单都会被覆盖。这个自定义表单背后有什么想法?

更新

在互联网上进行一些额外的研究之后,似乎TopMost属性的表现与你有时的表现一样。我刚刚测试了几次,现在它的行为与我想要的完全一样。

更新此两行表单的工作方式:

想象一下,你在FullScreen中打开了任何窗口。但两行Form 位于屏幕顶部。它会悬停所有其他窗口,但不像AppBar那样声明它自己的空间。 两行Form 永远不会被隐藏,因此不会涉及AutoHide。它只是带有" 屏幕截图区域",...的窗口,一旦两行表单获取后弹出...徘徊。此外,两行Form 绑定到屏幕顶部。

1 个答案:

答案 0 :(得分:0)

它应该可以正常使用TopMost = true(在WinForms和WPF中)。 TopMost意味着窗口将始终显示在没有设置此标志的任何其他窗口上(因此另一个最顶层窗口可能覆盖您的最顶层窗口),包括当前活动窗口。因此,屏幕截图上最有可能的是最顶层的窗口,其大小非常小,与屏幕顶部对齐,在鼠标悬停时显示另一个窗口(或自身展开),并在鼠标移出时隐藏该窗口(或收缩自身)。我不是WinForms的专家,所以如果在某些情况下这对你不起作用 - 你可能会在google中找到一些关于它为什么以及什么时候不起作用的信息(例如某些人声称从Visual Studio运行应用程序时它不起作用,因此请确保在测试时单独运行它。但一般来说,TopMost属性应该只是你所描述的。