如何获取WinForm窗口顶部边框高度?
获取WinForm窗口顶部边框高度的方案
你的思路是对的:窗口的标题栏及边框尺寸由Windows系统设置(可通过显示设置调整),无法通过WinForm直接修改,但确实可以获取其高度。以下是两种可行方法:
方法1:通过窗口自身属性计算
利用窗口的Bounds(整个窗口的矩形区域)和ClientRectangle(客户区内部区域)的属性差值计算,或者直接读取客户区相对窗口的顶部偏移:
// 方式A:通过整体高度差计算标题栏+顶部边框总高度 int topBarTotalHeight = this.Bounds.Height - this.ClientRectangle.Height; // 方式B:直接获取客户区顶部到窗口顶部的距离(即标题栏+顶部边框高度) int topBarTotalHeight = this.ClientRectangle.Top;
方法2:调用Windows API获取系统默认指标
如果需要在未创建窗口时获取系统默认的标题栏和边框尺寸,可以调用GetSystemMetrics API:
首先引入API声明:
using System.Runtime.InteropServices; [DllImport("user32.dll")] private static extern int GetSystemMetrics(int nIndex); // 系统指标常量 private const int SM_CYCAPTION = 4; // 标题栏高度 private const int SM_CYBORDER = 6; // 窗口上下边框的高度
然后获取总高度:
// 标题栏高度 + 顶部边框高度 int systemTopBarHeight = GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CYBORDER);

内容的提问来源于stack exchange,提问作者ssd
相关产品推荐
相关产品推荐

