有没有办法确定表单的文本属性是否适合使用表单当前宽度的顶部栏(或者是否会被“...”截断)?
答案 0 :(得分:7)
您可以查看TextRenderer.MeasureText()
。
要计算字幕文字的宽度,请使用以下代码段:
var width = TextRenderer.MeasureText(caption, SystemFonts.CaptionFont).Width;
您可以使用表单的大小,减去图标的固定值(如果可见)和右上角的按钮(取决于操作系统版本和[最小化] [最大化]按钮的可见状态并检查它是否仍然是积极的。这可能无法给出完全准确的结果,但它可能是最简单的近似值。
到目前为止,这种方法似乎计算出非常准确的近似值:
/// <summary>
/// Calculates an approximation of the available caption width
/// Depends on OS and theme
/// </summary>
/// <returns>Width</returns>
private int CalcAvaliableCaptionWidth()
{
return
// Form width
Width
// Icon
- (Icon == null ? 0 : Icon.Width)
// Minimize button (26 on Win8)
- (MinimizeBox ? SystemInformation.CaptionButtonSize.Width : 0)
// Maximize button (26 on Win8)
- (MaximizeBox ? SystemInformation.CaptionButtonSize.Width : 0)
// Close button (45 on Win8)
- SystemInformation.CaptionButtonSize.Width;
}
您可以尝试我的小验证WinForm应用程序
源代码: https://gist.github.com/CodeZombieCH/b9def0b0d9c41a98593a
感谢@Plutonix提示SystemInformation.CaptionButtonSize
。