如何获得TextBox的真实高度?

Mik*_*ike 5 c# textbox winforms

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

int height = textbox.lines.length * lineheight;
Run Code Online (Sandbox Code Playgroud)

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

Lar*_*ech 6

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

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

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

  • TextFormatFlags.TextBoxControl让它变得不那么傻了. (3认同)