Я искал, чтобы сделать мое приложение 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);
Надеюсь, это поможет. Ссылки