Получить максимальную ширину линии в RichTextBox - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь вычислить максимальную горизонтальную позицию прокрутки 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 по умолчанию включены полосы прокрутки.

Есть ли что-нибудь подобное, что я мог бы использовать, для которого не требуется активировать полосы прокрутки?

...