如何获取TextBox';s的实际身高

本文关键字:何获取 获取 TextBox | 更新日期: 2023-09-27 18:24:17

我的第一个想法是这样的:

int height = textbox.lines.length * lineheight;

但它只计算"''xd''n",并且可以换行。当所有内容都可见时,我可以获得显示的行数或文本框的实际高度(内部文本的高度)吗?

如何获取TextBox';s的实际身高

我不知道你是否会得到一个完美的测量,但这很接近:

private int GetTextHeight(TextBox tBox) {
  return TextRenderer.MeasureText(tBox.Text, tBox.Font, tBox.ClientSize,
           TextFormatFlags.WordBreak | TextFormatFlags.TextBoxControl).Height;
}

TextBox可能很愚蠢。在启用多行的情况下,如果您按下一个导致单词换行的字符,则除非我调整TextBox的大小,否则按退格不会导致它"取消换行"。这是在Win7-64上。我不认为TextBox控件总是这样做。

函数GetLineFromCharIndex()为您提供相应的行索引,即使文本是换行的。

int lineCount = textBox1.GetLineFromCharIndex(int.MaxValue) + 1;
int lineHeightPixel = TextRenderer.MeasureText("X", textBox1.Font).Height;