Как стать автором
Обновить

Комментарии 38

Ща начнется гон от линуксоидов мол вот видете, виндовс гавно))))))))))))
Очень странное поведение. Если не сказать больше.
Microsoft переизобрела scrollbar? Зачем…
Да не, не начнется. Нет идеальных систем.
Хотя идеи о причинах я бы послушал)
единственное что приходит мне в голову, что весь размер ползунка = Maximum
т.е. я имею ввиду, что они на ранних стадия завтыкали, и кноки заложили вверх и вних заложили, т.е. не дастоюшие 9, возможно это пространстов кнопок, хз, это первое что пришло в голову)
Да, первом в голову приходит это. Но это совсем не так, т.к. практический достижимый максимум = Maximum — LargeChange + 1. И если LargeChange установить на 1, то Maximum достигается…

В общем есть зависимость от LargeChange.
ну да, все правильно, перво начальено в где то с винь3.11 они завтыкаои и сделали так, ща поняли что первоначальный подход не правильный решили добавть это свойство LargeChange
но что бы не нарушать совместимости оставили все как есть!
Проблема наблюдается только в классе System.Windows.Forms.ScrollBar. Это Windows Forms, а Windows Forms — это часть .Net, то есть появилась только в 2002-м году.
ну с 3.11, это было образно

а с винАпи разбирались? все же не стоит забывать что дот нет дергате винАпи
Какие могут быть причины, если работает не так как ожидается? Maximum и в африке максимум. В примере 100 – то, чего ожидает и разработчик и пользователь.
>Ща начнется гон от линуксоидов мол вот видете, виндовс гавно))))))))))))

Вот видите, гон начался, но не от линуксоидов, а от Вас.
я такого не говорил, Вы явно что то путаете
Может быть кто-то сможет даже объяснить это? =)
www.microsoft.com они знают.
правда не вижу большой проблемы в «недобегании» ползунка.
Большой проблемы нет, если знать её)
насколько я помню раньше такой фигни не было, и ползунок добегал до 100.
Когда я прочесывал интернет по поисках объяснения, мне попадались переписки аж 2002-го года… Именно тогда только и вышел .Net.
К сожалению из личного опыта ничего сказать не могу.
НЛО прилетело и опубликовало эту надпись здесь
Тоже не вижу проблемы.

Кагбэ размер ползунка соответствует размеру области отображения (страницы), длина полосы прокрутки — размеру всей области, доступной для просмотра. Если ползунок находится в самой левой части полосы, его позиция — 0, а в области отображения — область от 0 до {размер страницы}. Соответственно, крайней правой области от {вся длина — размер страницы} до {размер страницы} соответствует позиция ползунка {максимальное значение — размер ползунка}. Позиция ползунка {максимальное значение} соответствовала бы (несуществующей) области от {вся длина} до {вся длина + размер страницы }.

Прошу прощения за сумбурное и плохо отформатированное объяснение. ± 1 я опускал для краткости и чтобы не ошибиться.

> почему при уменьшении свойства LargeChange размер бегунка остается прежним, а максимум достигается?

Если сделать размер ползунка слишком маленьким, пользователь не сможет его курсором таскать.
Хм, а Вы правы. Спасибо)
Пока набирал, сам запутался. Вместо

> крайней правой области от {вся длина — размер страницы} до {размер страницы}

читать

> крайней правой области от {вся длина — размер страницы} до {вся длина}
.NET — это довольно объемные классы. Много кода. Написанно якобы для удобства разработчиков.
Я не верю что трудно было сделать компонент с плавающим шагом у которого значения были бы от min до max включительно. Это элементарно.
Здорово! Это из области «неочевидная очевидность», когда на вопрос «Какое количество билетов в кино на места от 5-го до 10-го?» Правильный ответ — 6 :)
Теорема ползунка доказана!
Для таких целей лучше, имхо пользоваться System.Windows.Forms.TrackBar
Для каких целей?)
Цели преследовались как раз в прокрутке графика…
Для выбора же значения из какого-то диапазона согласен, лучше TrackBar.
Для прокрутки графика скроллбар как раз самое логичное. Есть и «отображаемая страница» и «вся область». А если нужно значение выбирать из диапазона, то как раз TrackBar в помощь.
Так я и использовал ScrollBar ;)
забавные индусские кодеры. больше чем уверен такую сложность придумали чтобы увеличить количество строк кода, ведь им платят как раз за количество строчек.
НЛО прилетело и опубликовало эту надпись здесь
96.4
НЛО прилетело и опубликовало эту надпись здесь
Не стоит пить бензин :)
А вы поставьте hScrollBar1.Maximum = 109 и будет счастье.
Про читабельность кода не знаем, не?

Да и вообще, через 3адницу* это выглядело бы.
*Буквы З тут нету, это тройка.
Напишите
hScrollBar1.Maximum = 100 + WINDOWS_STRANGE_OFFSET; А сам оффсет, хотите вычисляйте, хотите константой. И рядом с ним комментарий напишите, зачем это.

Я идею предложил.

Мозгом можно обдумать, не?
Правильно mrShadow сказал:
Позиция ползунка = начало видимой области
Его длина = размер видимой области
Соответственно, конец области просмотра = позиция + длина (в итоге получится 100%, ±1% для округления)
В положение 100% его никогда не нужно устанавливать (это то же самое, что вытянуть его за пределы видимости.)

Для выбора значений из диапазона служит совсем другой ползунок.
109 ответ на все вопросы а не 42 )
Да! При Путине такого безобразия не было!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории