Как исправить полосы прокрутки при изменении размера окна или контейнера? - PullRequest
3 голосов
/ 17 августа 2011

В настоящее время в моем приложении я использую HScrollBar и VScrollBar для панорамирования большого изображения.Отображаемая часть изображения основана на свойстве полосы прокрутки «Значение».Однако при изменении размера SplitContainer или изменении размера окна формы значение полосы прокрутки не обновляется автоматически, и оно может отображать что-то за пределами экрана.

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

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

Ответы [ 2 ]

2 голосов
/ 28 августа 2011

Попробуйте вызвать метод Invalidate() полосы прокрутки в обработчике изменения размера формы:
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.invalidate.aspx

Это должно заставить его правильно перерисоваться после изменения размера формы.

0 голосов
/ 27 сентября 2011

Используйте что-то вроде этого:

HScrollBarObject.SetStyle(ControlStyles.ResizeRedraw, true);
...