我的第一个想法是它会是这样的:
int height = textbox.lines.length * lineheight;
但它只计算“\ xd \ n”并且可以包装线条。当一切都可见时(内部文本的高度),我可以获得显示的行数或文本框的实际高度吗?
答案 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;