如何获得TextBox的真实高度?

时间:2012-02-12 14:16:41

标签: c# winforms textbox

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

int height = textbox.lines.length * lineheight;

但它只计算“\ xd \ n”并且可以包装线条。当一切都可见时(内部文本的高度),我可以获得显示的行数或文本框的实际高度吗?

2 个答案:

答案 0 :(得分:6)

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

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

TextBox可能很傻。打开多行时,如果按下导致单词自动换行的字符,除非我调整TextBox的大小,否则按下退格键不会导致它“取消自动换行”。这是在Win7-64上。我不认为 TextBox控件总是这样做。

答案 1 :(得分:0)

函数GetLineFromCharIndex()为您提供相关的行索引,即使文本被包装也是如此。

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