如何获得TextBox的真实高度?

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

int height = textbox.lines.length * lineheight; 

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

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

 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;