要實現窗口的自動置頂,可以使用Win32 API中的SetWindowPos函數。以下是在C#中實現窗口置頂的示例代碼:
using System;
using System.Runtime.InteropServices;
public class WindowHelper
{
[DllImport("user32.dll")]
public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
public static void SetTopMost(IntPtr handle)
{
const uint SWP_NOMOVE = 0x2;
const uint SWP_NOSIZE = 0x1;
const uint SWP_SHOWWINDOW = 0x40;
const uint HWND_TOPMOST = 0xFFFFFFFF;
SetWindowPos(handle, (IntPtr)HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
}
public static void SetNoTopMost(IntPtr handle)
{
const uint SWP_NOMOVE = 0x2;
const uint SWP_NOSIZE = 0x1;
const uint SWP_SHOWWINDOW = 0x40;
const uint HWND_NOTOPMOST = -1;
SetWindowPos(handle, (IntPtr)HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
}
}
然后,在窗口加載或需要置頂的時候,可以使用以下代碼來實現窗口的自動置頂:
IntPtr handle = this.Handle; // 獲取窗口句柄
WindowHelper.SetTopMost(handle); // 將窗口置頂
// 窗口不需要置頂時,可以使用以下代碼取消置頂
// WindowHelper.SetNoTopMost(handle);
通過以上方法可以在C#中實現窗口的自動置頂。