我想確定什麼最好的方法是確定在多行winforms TextBox
控件上顯示的顯示(可見由於滾動)的行數。最準確的方法來計算winforms中顯示的行數TextBox控件
我使用目前的方法是非常不準確(因爲其他的方法我都試過):
var size = TextRenderer.MeasureText(
textBox.Text, textBox.Font, textBox.ClientSize, TextFormatFlags.TextBoxControl);
int lines = textBox.Lines.Length;
int lineHeight = (size.Height/lines);
// Value assigned to 'lines' does not reflect number of lines displayed:
int lines = (textBox.Height/lineHeight);
計算可見,必須考慮到的東西的行數的方法,如的滾動條文本框以及包括僅部分可見的行的文本框顯示的細微差別不顯示。
任何解決方案將不勝感激!
更新:
嘗試了以下計算的建議,但仍然有不準確的結果:
int lines = (textBox.Height/textBox.Font.Height);
我做了一個簡單的測試程序,這裏是一個截圖,上面的兩個例子產生類似的結果:
計算出的使用這兩種方法的行數通常不會反映隨着高度增加或減少而顯示的實際行數。
而不是你的冗長計算,請嘗試'textBox.Font.Height'屬性作爲行高。 – nekavally
謝謝你的建議;上述問題更新結果;仍然存在着不準確的線數計算。 – Lemonseed
它不是直截了當的,TextBox使用未指定的邊距。你將不得不探測,使用TextBox.GetCharacterIndexFromPoint和GetLineIndexFromCharacterIndex ..嘿一個XY問題btw。 –