c#实现Form窗体始终在桌面最前端显示
方法一:
//调用API [System.Runtime.InteropServices.DllImport("user32", CharSet = System.Runtime.InteropServices.CharSet.Auto, ExactSpelling = true)] public static extern IntPtr GetFocus(); //获得本窗体的句柄 [System.Runtime.InteropServices.DllImport("user32", EntryPoint = "SetForegroundWindow")] public static extern bool SetFocus(IntPtr hWnd);//设置此窗体为活动窗体 // 定义变量,句柄类型 public IntPtr han; private void Form1_Load(object sender, EventArgs e){ //在窗体加载的时候给变量赋值,即将当前窗体的句柄赋给变量 han = this.Handle; } private void timer1_Tick(object sender, EventArgs e){ // 加载一个定时器控件,验证当前WINDOWS句柄是否和本窗体的句柄一样,如果不一样,则激活本窗体 if (han != GetFocus()){ SetFocus(han); } this.WindowState = FormWindowState.Normal; }
方法二:
[System.Runtime.InteropServices.DllImport("user32")] private static extern IntPtr GetActiveWindow();//获取当前窗体的活动状态 // 判断当前窗口是否处于活动状态的方法 private bool ThisIsActive(){ return (GetActiveWindow() == this.Handle);} private void timer1_Tick(object sender, EventArgs e){ if (!ThisIsActive()){ this.Activate(); } this.WindowState = FormWindowState.Normal; }
方法三
[DllImport("user32")] private static extern IntPtr FindWindow(string lpClassName,string lpWindowName); [DllImport("user32")] private static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); //在窗体On_Load事件中添加(Santos的代码): IntPtr hDeskTop=FindWindow("Progman", "Program Manager"); SetParent(this.Handle,hDeskTop);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!