我正在搜索使WinForms应用程序“始终位于顶部”,但是设置“ TopMost”对我没有任何帮助。我知道这是有可能的,因为WinAmp可以做到这一点(以及许多其他应用程序)。
我所做的是打电话给“ user32.dll”。我对此毫不犹豫,而且效果很好。无论如何,这是一个选择。
首先,导入以下名称空间:
using System.Runtime.InteropServices;
在类声明中添加一些变量:
private static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);
private const UInt32 SWP_NOSIZE = 0x0001;
private const UInt32 SWP_NOMOVE = 0x0002;
private const UInt32 TOPMOST_FLAGS = SWP_NOMOVE | SWP_NOSIZE;
为user32.dll函数添加原型:
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
然后在您的代码中(我在Form_Load()中添加了调用),添加了调用:
SetWindowPos(this.Handle, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS);
希望能有所帮助。参考