我希望能够让我的应用始终处于领先地位。因此,当我打开一个新程序并且即使我将此.TopLevel值设置为true时,该应用程序将看到它不再位于顶部,然后返回顶部。 我知道我可以用计时器做到这一点,但我希望他们是一个更好的方法。
答案 0 :(得分:3)
您可以使用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;
从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);
然后在您的代码中,使用此选项将窗口位置设置为最顶层的窗口。
SetWindowPos(this.Handle, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS);
我希望这可以帮到你!
答案 1 :(得分:1)
我建议你抓住新窗口的事件,看看你是否在新窗口打开后处于顶层: