我有一些文字框具有不同的字體大小的多行功能。現在我想知道此文本框文本的行高度,因爲它是一個簡單的文本框,因此每個行高度對於整個文本框都是相同的,因爲它不是RichTextBox。如何使用C#獲取MultiHine TextBox中的LineHeight/FontHeight?
所以我們可以得到它通過C#編程變量?你可以看到更多信息的截圖。
我有一些文字框具有不同的字體大小的多行功能。現在我想知道此文本框文本的行高度,因爲它是一個簡單的文本框,因此每個行高度對於整個文本框都是相同的,因爲它不是RichTextBox。如何使用C#獲取MultiHine TextBox中的LineHeight/FontHeight?
所以我們可以得到它通過C#編程變量?你可以看到更多信息的截圖。
感謝您的有益答覆@CodyGray,最後我得到了我想要的答案,只是你的代碼編輯如下,它的工作完美。
int lineHeight;
using (Graphics g = textBox1.CreateGraphics())
{
lineHeight = Convert.ToInt32(g.MeasureString("A", textBox1.Font).Height);
}
要測量文本,請使用TextRender.MeasureText
。
如果你不感興趣的寬度,你可以調用函數在一個非常簡單的方法:
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
。)
我現在對您的解決方案有點問題。你的答案工作正常,但它給我的文本總高度來自'textBox1'的頂部邊界的文本意味着我有4行文本,然後它給我從'textBox1'的頂部邊框到第4行文本的高度。但是什麼我的問題是要知道** LineHeight/FontHeight **只有不是全文的高度。那麼現在在代碼中更新什麼???? –
我試過用這個代碼,但是它也沒有給出完美的結果...... 'int pixels; using(Graphics g = textBox1.CreateGraphics()) { float points = textBox1.Font.SizeInPoints; pixels = Convert.ToInt16(points * g.DpiX/72); (「myFont size in pixels:」+ pixels);' –
我也嘗試過使用它,但它也沒有給出完美的結果......'int fontHeight = Convert.ToInt32(textBox1 .Font.Size);' –