我的第一反应是它会像这样:
int height = textbox.lines.length * lineheight;
但它只计算"\xd\n",而且行可能会被换行。我能得到显示行数或当所有内容都可见时的文本框实际高度(文本内部的高度)吗?
我的第一反应是它会像这样:
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;
}
文本框可能有些棘手。如果打开多行功能,如果您按下导致单词换行的字符,那么按退格键不会使其“取消单词换行”,除非我调整文本框大小。这在Win7-64上出现。我认为,文本框控件并不总是这样做。
函数 GetLineFromCharIndex() 可以给你正确的行索引,即使文本被换行。
int lineCount = textBox1.GetLineFromCharIndex(int.MaxValue) + 1;
int lineHeightPixel = TextRenderer.MeasureText("X", textBox1.Font).Height;