Winforms текстовые поля на странице

2

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

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

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

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

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

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

  • 0
    Если вы используете прокручиваемое текстовое поле, я предполагаю, что вам нужно количество строк, которые могут поместиться в текстовом поле непосредственно перед его прокруткой?
Теги:
winforms
.net-2.0

2 ответа

0

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

0

Вы можете попробовать следующее:

public int LinesPerPage    
{     
   get   
   {      
      return (int)(this.ClientSize.Height / this.Font.Height);
   }
}
  • 0
    Я предполагаю, что есть также вертикальное заполнение между строками текста? Разве это не нужно принимать во внимание?
  • 0
    Я пробовал выше и, кажется, работает для текстового поля по умолчанию и настройки шрифта, я не уверен, если вы можете изменить отступ между строками, но если вы можете, то да

Ещё вопросы

Сообщество Overcoder
Наверх
Меню