C# 窗体永远在最前

C# 窗体永远在最前

1、调用系统API

csharp 复制代码
 public const int HWND_TOP = 0;
 public const int HWND_BOTTOM = 1;
 public const int HWND_TOPMOST = -1;
 public const int HWND_NOTOPMOST = -2;

 //设置此窗体为活动窗体:
 //将创建指定窗口的线程带到前台并激活该窗口。键盘输入直接指向窗口,并为用户更改各种视觉提示。
 //系统为创建前台窗口的线程分配的优先级略高于其他线程。
 [DllImport("user32.dll", EntryPoint = "SetForegroundWindow")]
 public static extern bool SetForegroundWindow(IntPtr hWnd);

 //设置此窗体为活动窗体:
 //激活窗口。窗口必须附加到调用线程的消息队列。
 [DllImport("user32.dll", EntryPoint = "SetActiveWindow")]
 public static extern IntPtr SetActiveWindow(IntPtr hWnd);

 //设置窗体位置
 [DllImport("user32.dll", CharSet = CharSet.Auto)]
 private static extern int SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int x, int y, int Width, int Height, int flags);

2、函数调用(放在构造或Load)

csharp 复制代码
 // 设置窗体显示在最上层
 SetWindowPos(this.Handle, -1, 0, 0, 0, 0, 0x0001 | 0x0002 | 0x0010 | 0x0080);
 // 设置本窗体为活动窗体
 SetActiveWindow(this.Handle);
 SetForegroundWindow(this.Handle);
 // 设置窗体置顶
  this.TopMost = true;

文章抄录自 c#让窗体永在最前 调用windows api 将窗体设为topmost

相关推荐
xyq20242 小时前
服务定位器模式
开发语言
努力努力再努力wz2 小时前
【MySQL入门系列】掌握表数据的 CRUD:DML 核心语法与执行逻辑解析
android·开发语言·数据结构·数据库·c++·b树·mysql
xiaoye-duck2 小时前
【C++:异常】C++ 异常讲解指南:从理论到实践,深入理解栈展开和优雅处理程序错误
开发语言·c++·异常
SarL EMEN2 小时前
海康威视摄像头ISUP(原EHOME协议) 摄像头实时预览springboot 版本java实现,并可以在浏览器vue前端播放(附带源码)
java·前端·spring boot
qq_452396232 小时前
【工程实战】第八篇:报告美学 —— Allure 深度定制:让 Bug 定位精准到秒
开发语言·python·bug
考虑考虑2 小时前
图片居中
java·后端·java ee
Zqrnja2 小时前
PTA 2026天体选拔赛(多校联赛)L2-1 仪式网络(C++ 含代码解释)
开发语言·c++
llm大模型算法工程师weng3 小时前
负载均衡做什么?nginx是什么
运维·开发语言·nginx·负载均衡
有梦想的攻城狮3 小时前
java中的EnumSet使用详解
java·set·bitset·enumset