我有一些文本框有多个线条功能,具有不同的字体大小。现在我想知道这个文本框文本的行高是一个简单的文本框,因此整个文本框的每一行高度都不同于RichTextBox。
那么我们可以通过C#编程将它变成一个变量吗?您可以查看屏幕截图以获取更多信息。
答案 0 :(得分:3)
要衡量文字,请使用TextRender.MeasureText
。
如果您对宽度不感兴趣,可以用非常简单的方式调用该函数:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1 id="test"></h1>
正如你所说,如果每一行使用相同的字体(就像TextBox一样),那么每一行都会有相同的高度,所以你可以将高度乘以行数。
但您也可以使用int textHeight;
using (Graphics g = textBox1.CreateGraphics())
{
textHeight = TextRenderer.MeasureText(g, textBox1.Text, textBox1.Font).Height;
}
来确定显示文本所需的宽度和高度。例如:
TextRenderer.MeasureText
(还有一个Size szText;
using (Graphics g = textBox1.CreateGraphics())
{
szText = TextRenderer.MeasureText(g,
textBox1.Text,
textBox1.Font,
textBox1.ClientSize,
TextFormatFlags.Left
| TextFormatFlags.Top
| TextFormatFlags.NoPrefix
| TextFormatFlags.TextBoxControl);
}
方法可以做一些非常类似的事情。但是不要使用它。它测量字符串就好像它是由GDI +绘制的,但内置的控件所有人都使用GDI绘制文本,因此需要Graphics.MeasureString
。)
答案 1 :(得分:-2)
感谢您的回复@CodyGray,最后我通过对您的代码进行了少量编辑得到了我想要的答案,如下所示,并且工作完美。
int lineHeight;
using (Graphics g = textBox1.CreateGraphics())
{
lineHeight = Convert.ToInt32(g.MeasureString("A", textBox1.Font).Height);
}