2017-02-18 9 views
0

Я не уверен, что это дублированный вопрос, но я не мог найти ответа на StackOverflow.Как перемещать значение полосы прокрутки в процентах в Winforms?

Заявление о проблемах: У меня есть сторонние средства просмотра изображений и средства просмотра в формате PDF. которые встроены в страницу C# WinForms. Я хочу контролировать движение прокрутки в процентах. Например, если я нажимаю клавишу «вниз», вертикальная полоса прокрутки должна опускаться до 20% высоты страницы. Я попытался с логикой ниже:

_imageViewer.VerticalScrollBar.Value += _imageHeight X ZoomFactor X .20 
OR 
_imageViewer.VerticalScrollBar.Value += pdfViewer1.VerticalScroll.Maximum X .20 

Оба подхода не дают мне точного результата. Я думаю, мне также следует рассмотреть размер большого пальца полосы прокрутки, но я не знаю, как я могу получить эту ценность.

Пожалуйста, предложите мне любой хороший подход к перемещению полосы прокрутки в процентах от высоты или ширины изображения.

+1

Scrollbars имеет большую волосатые проблемы удобства и простоту использования. Вызванный большим пальцем имеет ненулевой размер. Если он прокручивается полностью, вы должны рассмотреть верхнюю часть большого пальца, чтобы указать позицию. Если прокрутка полностью вниз, то нижняя часть большого пальца имеет значение. Так точно, когда он переключается сверху вниз? Нет стандартного ответа. Лучше всего рассмотреть диапазон полос прокрутки за вычетом большого пальца, чтобы определить положение, так что вы никогда не доберетесь до 100%. Размер большого пальца должен быть эквивалентен размеру страницы. –

ответ

1

Свойство SmallChange можно присвоить ScrollBar. Как указано в документах, Когда пользователь нажимает одну из клавиш со стрелками или нажимает одну из кнопок полосы прокрутки, свойство Value изменяется в соответствии со значением, установленным в свойстве SmallChange.

Пример:

vScrollBar1.SmallChange = ((vScrollBar1.Maximum - vScrollBar1.Minimum) * 20/100); 
+0

Установите 'Minimum = 0' и' Maximum = imageHeight', а затем, установив 'SmallChange', как я сделал, вы можете прокручивать его' 20% 'каждый раз, когда вы нажимаете стрелку вверх/вниз. –

+0

Это не работает для меня. Высота изображения = 615, Zoom = 1.32, VerticalScrollbar. Максимальное значение устанавливается автоматически, и я обнаружил, что он равен 1087. Он не устанавливается (высота изображения X Zoom). Можете ли вы поделиться своим кодом, как он работает, особенно когда изображение увеличено или выключено. –

+0

Он работал со следующей логикой: VerticalScroll.SmallChange = VerticalScroll.Maximum - VerticalScroll.LargeChange) * 20/100 –