none
Scrollbar в textbox RRS feed

  • Вопрос

  • Здравствуйте.

    У меня такой вот вопрос: можно ли изменять свойства автоматического скролбара в текстбоксе. Мне нужно изменить свойство максимального размера вертикального скролбара и свойство Value скроллбара.

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

    26 января 2014 г. 22:23

Ответы

  • Посмотрите в сторону Data bindings, правда не представляю что вы имеете под "сколллбар должен работать как прогрессбар". Возможно подойдет создание контрола, который будет состоять из текстбокса и прогрессбара. При инициализации максимальное значение прогрессбара равно нулю, соответственно при подгрузке текста ползунок будет уменьшаться, т.к максимальное значение прогрессбара будет рости.

    • Помечено в качестве ответа Vata1990 31 января 2014 г. 7:26
    27 января 2014 г. 18:50
  • В таком случае, можно создать свой элемент управления, состоящий из TextBox и VScrollBar. У TextBox-а установите для свойства ScrollBars значение "None", чтобы не отображались встроенные линейки. Если такая комбинация Control-ов нужна только один раз, можно свой элемент не создавать, а просто разместить их рядом и запрограммировать соответствующую логику взаимодействия.
    • Помечено в качестве ответа Vata1990 31 января 2014 г. 7:26
    30 января 2014 г. 10:04

Все ответы

  • Какого типа приложение Вы создаёте? Управляемое, неуправляемое? Какую технологию применяете (winform, wpf, ...)?
    27 января 2014 г. 4:29
  • Я создаю управляемое приложение. WinForm. 

    Нигде не нашел средства доступа к автоскроллбару, но что то мне подсказывает что оно должно быть. Я загружаю в текст бокс куски текста в цикле, изначально мне известна общее количество символов всего текста и количество символом в блоке. Мне нужно перед загрузкой первого куска текста поставить максимальное значение скролбара = размер текста - размер куска текста, и после загрузки каждого куска текста изменять текущее положение скролбара(Value++).

    27 января 2014 г. 6:29
  • Мне кажется, что Вам, на самом деле, требуется, чтобы TextBox в каждый момент времени отображал последний добавленный блок. Так? Если да, то Вы решаете задачу не с той стороны. Управлять скролбаром для этого не требуется. У TextBox-а есть такая характеристика - текущая позиция каретки. Установить позицию позволяет свойство SelectionStart, а отобразить часть текста, в котором в данный момент находится каретка позволяет метод ScrollToCaret.

    Таким образом, алгоритм должен быть следующим: добавили кусок текста, переместили каретку в конец этого текста с помощью SelectionStart и вызвали ScrollToCaret. Добавленный кусок отображается в TextBox!

    27 января 2014 г. 9:42
  • Такой вариант подошел бы, но дело в том, что перед загрузкой первой порции данных, необходимо установить максимальное значение скролбара, чтобы получилос что-то типа прогрессбара. То есть два в одном, пока загружается текст он показывает процесс загрузки по которому видно какая часть файла уже загрузилась и сколько еще осталось загрузиться, а после загрузки он должен работать как обычный скроллбар. Такая вот запара(((
    27 января 2014 г. 18:17
  • Посмотрите в сторону Data bindings, правда не представляю что вы имеете под "сколллбар должен работать как прогрессбар". Возможно подойдет создание контрола, который будет состоять из текстбокса и прогрессбара. При инициализации максимальное значение прогрессбара равно нулю, соответственно при подгрузке текста ползунок будет уменьшаться, т.к максимальное значение прогрессбара будет рости.

    • Помечено в качестве ответа Vata1990 31 января 2014 г. 7:26
    27 января 2014 г. 18:50
  • В таком случае, можно создать свой элемент управления, состоящий из TextBox и VScrollBar. У TextBox-а установите для свойства ScrollBars значение "None", чтобы не отображались встроенные линейки. Если такая комбинация Control-ов нужна только один раз, можно свой элемент не создавать, а просто разместить их рядом и запрограммировать соответствующую логику взаимодействия.
    • Помечено в качестве ответа Vata1990 31 января 2014 г. 7:26
    30 января 2014 г. 10:04