2009-07-30 2 views
2

У нас есть несколько многострочных, прокручиваемых элементов управления текстовыми полями Winforms в .NET 2.0, которым необходимо реализовать разбиение на страницы, чтобы позволить пользователю перемещаться по их содержимому только путем перемещения одной страницы (полный контроль над стоимостью текст) за раз.Winforms textbox lines на страницу

Как часть этого, мне нужно получить количество полных строк текста, которые могут быть видны на экране в любой момент, чтобы определить, сколько страниц содержит текстовое поле.

Я уверен, что нет сообщения Windows, которое позволит мне получить эту информацию напрямую и не смогу выработать приемлемое решение этой проблемы.

Ниже приведено настоящее решение, которое, как правило, дает ошибку округления по меньшей мере одной линии, поэтому она была менее успешной.

public int LinesPerPage 
{ 
    get 
    { 
     return (int)(this.Height/this.Font.Height); 
    } 
} 

В идеале я хотел бы знать алгоритм, используемый при составлении текста в контроль, но если это не доступно и другие предложения люди были бы весьма признателен.

+0

Если вы используете прокручиваемое текстовое поле, я предполагаю, что вы хотите, чтобы количество строк, которые могут вставляться в текстовое поле, прямо перед прокруткой? – SwDevMan81

ответ

0

Вы можете попробовать это:

public int LinesPerPage  
{  
    get 
    {  
     return (int)(this.ClientSize.Height/this.Font.Height); 
    } 
} 
+0

Я предполагаю, что есть некоторые вертикальные отступы между строками текста? Разве это не нужно учитывать? –

+0

Я пробовал выше, и, похоже, он работает для стандартных текстовых полей и настроек шрифтов, я не уверен, что вы можете изменить отступы между строками, но если вы можете, то да – SwDevMan81

0

В System.Drawing.Graphics класс имеет метод, называемый MeasureString. Одна из перегрузок метода возвращает линии, установленные (что будет видно на основе других параметров, переданных в).

Смежные вопросы