единственное что приходит мне в голову, что весь размер ползунка = Maximum
т.е. я имею ввиду, что они на ранних стадия завтыкали, и кноки заложили вверх и вних заложили, т.е. не дастоюшие 9, возможно это пространстов кнопок, хз, это первое что пришло в голову)
Да, первом в голову приходит это. Но это совсем не так, т.к. практический достижимый максимум = Maximum — LargeChange + 1. И если LargeChange установить на 1, то Maximum достигается…
ну да, все правильно, перво начальено в где то с винь3.11 они завтыкаои и сделали так, ща поняли что первоначальный подход не правильный решили добавть это свойство LargeChange
но что бы не нарушать совместимости оставили все как есть!
Проблема наблюдается только в классе System.Windows.Forms.ScrollBar. Это Windows Forms, а Windows Forms — это часть .Net, то есть появилась только в 2002-м году.
Какие могут быть причины, если работает не так как ожидается? Maximum и в африке максимум. В примере 100 – то, чего ожидает и разработчик и пользователь.
Когда я прочесывал интернет по поисках объяснения, мне попадались переписки аж 2002-го года… Именно тогда только и вышел .Net.
К сожалению из личного опыта ничего сказать не могу.
Кагбэ размер ползунка соответствует размеру области отображения (страницы), длина полосы прокрутки — размеру всей области, доступной для просмотра. Если ползунок находится в самой левой части полосы, его позиция — 0, а в области отображения — область от 0 до {размер страницы}. Соответственно, крайней правой области от {вся длина — размер страницы} до {размер страницы} соответствует позиция ползунка {максимальное значение — размер ползунка}. Позиция ползунка {максимальное значение} соответствовала бы (несуществующей) области от {вся длина} до {вся длина + размер страницы }.
Прошу прощения за сумбурное и плохо отформатированное объяснение. ± 1 я опускал для краткости и чтобы не ошибиться.
> почему при уменьшении свойства LargeChange размер бегунка остается прежним, а максимум достигается?
Если сделать размер ползунка слишком маленьким, пользователь не сможет его курсором таскать.
.NET — это довольно объемные классы. Много кода. Написанно якобы для удобства разработчиков.
Я не верю что трудно было сделать компонент с плавающим шагом у которого значения были бы от min до max включительно. Это элементарно.
Здорово! Это из области «неочевидная очевидность», когда на вопрос «Какое количество билетов в кино на места от 5-го до 10-го?» Правильный ответ — 6 :)
Для прокрутки графика скроллбар как раз самое логичное. Есть и «отображаемая страница» и «вся область». А если нужно значение выбирать из диапазона, то как раз TrackBar в помощь.
забавные индусские кодеры. больше чем уверен такую сложность придумали чтобы увеличить количество строк кода, ведь им платят как раз за количество строчек.
Правильно mrShadow сказал:
Позиция ползунка = начало видимой области
Его длина = размер видимой области
Соответственно, конец области просмотра = позиция + длина (в итоге получится 100%, ±1% для округления)
В положение 100% его никогда не нужно устанавливать (это то же самое, что вытянуть его за пределы видимости.)
Для выбора значений из диапазона служит совсем другой ползунок.
Недостижимый System.Windows.Forms.ScrollBar.Maximum