Я пытаюсь вычислить максимальную горизонтальную позицию прокрутки RichTextBox, я знаю, что могу сделать что-то вроде:
Graphics g = richTextBox1.CreateGraphics();
float maxLineWidth = 0;
foreach(string line in richTextBox1.Lines) {
float thisLineWidth = g.MeasureString(line, richTextBox1.Font).Width;
if(thisLineWidth > maxLineWidth) {
maxLineWidth = thisLineWidth;
}
}
Но есть ли более эффективный способ?
Есть функция win api GetScrollRange
, которая используется как:
int min = 0;
int max = 0;
GetScrollRange(richTextBox1.Handle, SB_HORZ, out min, out max);
Но для этого необходимо, чтобы в RichTextBox были включены полосы прокрутки, в противном случае min / max всегда будет равно 0. Я не хочу, чтобы мой RichTextBox по умолчанию включены полосы прокрутки.
Есть ли что-нибудь подобное, что я мог бы использовать, для которого не требуется активировать полосы прокрутки?