如何使用C#在多行文本框中获取LineHeight/FontHeight?

如何使用C#在多行文本框中获取LineHeight/FontHeight?,c#,.net,winforms,visual-studio,fonts,C#,.net,Winforms,Visual Studio,Fonts,我有一些文本框具有多行功能,字体大小不同。现在我想知道这个文本框文本的行高,因为它是一个简单的文本框,所以整个文本框的每个行高都是相同的,因为它不是RichTextBox 那么我们可以通过C#编程在变量中得到它吗?您可以查看屏幕截图了解更多信息 要测量文本,请使用 如果您对宽度不感兴趣,可以用一种非常简单的方式调用该函数: int textHeight; using (Graphics g = textBox1.CreateGraphics()) { textHeight = Text

我有一些文本框具有多行功能,字体大小不同。现在我想知道这个文本框文本的行高,因为它是一个简单的文本框,所以整个文本框的每个行高都是相同的,因为它不是RichTextBox

那么我们可以通过C#编程在变量中得到它吗?您可以查看屏幕截图了解更多信息

要测量文本,请使用

如果您对宽度不感兴趣,可以用一种非常简单的方式调用该函数:

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);
}

(还有一个
Graphics.MeasureString
方法,它做的事情非常类似。但是不要使用它。它测量字符串就像是由GDI+绘制一样,但是内置控件都使用GDI来绘制文本,因此需要
TextRenderer.MeasureText
)谢谢您的帮助回复@CodyGray,最后我只需对下面的代码进行一点编辑,就得到了我想要的答案,而且它工作得非常好

int lineHeight;
using (Graphics g = textBox1.CreateGraphics())
{
    lineHeight = Convert.ToInt32(g.MeasureString("A", textBox1.Font).Height);
}

我现在对你的解决方案有点问题。你的答案很好,但它给了我从
textBox1
的上边框到文本的总高度意味着我有4行文本,然后它给了我从
textBox1
的上边框到文本第4行的高度,但我的问题是只知道行高/字体高度,而不是全文高度。那么代码中现在要更新什么…??我尝试使用此代码,但也没有给出完美的结果<代码>整数像素;使用(Graphics g=textBox1.CreateGraphics()){float points=textBox1.Font.SizeInPoints;pixels=Convert.ToInt16(points*g.DpiX/72);}MessageBox.Show(“以像素为单位的myFont size:+像素”)我也试着使用,但它也没有给出完美的结果
int-fontHeight=Convert.ToInt32(textBox1.Font.Size)正如我在答案底部提到的,这是错误的解决方案:“还有一种
Graphics.MeasureString
方法,其作用非常类似。但是不要用它。它测量字符串就像它是由GDI+绘制的一样,但是内置控件都使用GDI来绘制它们的文本,因此您需要
textrender.MeasureText