Лучший отвечающий
Баг HScroolBar VScroolBar VS8

Вопрос
-
Version 8.0.50727.42 (RTM.050727-4200)
Microsoft .NET Framework
Version 2.0.50727 SP2
Installed Edition: Professional
Microsoft Visual C# 2005 77626-009-0000007-41114
Microsoft Visual C# 2005
Security Update for Microsoft Visual Studio 2005 Professional Edition - ENU (KB925674)
This Security Update is for Microsoft Visual Studio 2005 Professional Edition - ENU. \n
If you later install a more recent service pack, this Security Update will be uninstalled automatically. \n
For more information, visit http://support.microsoft.com/kb/925674
Создаем HScroolBar (или VScroolBar) и TextBox
прописываем метод
private void hScrollBar1_Scroll(object sender, ScrollEventArgs e)
{
textBox1.Text = hScrollBar1.Value.ToString();
}Значения
hScrollBar1.Maximum=100
hScrollBar1.Minimum=0
hScrollBar1.SmallChange=1
hScrollBar1.LargeChange=10
Запускаем. Тянем ползунок в конец в текстовом поле значение 91
Меняем hScrollBar1.LargeChange=5
Запускаем. Тянем ползунок в конец в текстовом поле значение 96
Меняем hScrollBar1.LargeChange=2
Запускаем. Тянем ползунок в конец в текстовом поле значение 99
Меняем hScrollBar1.LargeChange=1
Запускаем. Тянем ползунок в конец в текстовом поле значение 100
Реальный максимум = hScrollBar1.Maximum-LargeChange+1
Как лечить?
8 августа 2012 г. 6:41
Ответы
-
Если вам нужно двигая ползунок получать точное значения для отображения где то, то лучше использовать TrackBar. Со ScrollBar никакого бага нет. Если значение Value+LargeChange > Maximum, то приплюсовки не будет и нужно нажимать на стрелочку вправо/вниз, дабы добрать максимум с помощью SmallChange. В классических сценариях использования ScrollBar это не принципиально и не расценивается как баг.
Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!
- Помечено в качестве ответа Abolmasov Dmitry 17 августа 2012 г. 9:50
8 августа 2012 г. 8:21Отвечающий -
Я немного спутал для чего нужно LargeChange, поэтому ошибся с подгонкой стрелочками. А в остальном мой ответ актуален. Для получения занчения при движении ползунка нужен TrackBar. В ScrollBar же нельзя установить Maximum ручками, можно только из кода. Читайте заметки здесь. Опережая ваш вопрос "Почему так?". Ну видать были на то причины при создании контрола.
Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!
- Изменено LXGDARKEditor 8 августа 2012 г. 8:47
- Предложено в качестве ответа LXGDARKEditor 9 августа 2012 г. 14:37
- Помечено в качестве ответа Abolmasov Dmitry 17 августа 2012 г. 9:50
8 августа 2012 г. 8:46Отвечающий
Все ответы
-
Если вам нужно двигая ползунок получать точное значения для отображения где то, то лучше использовать TrackBar. Со ScrollBar никакого бага нет. Если значение Value+LargeChange > Maximum, то приплюсовки не будет и нужно нажимать на стрелочку вправо/вниз, дабы добрать максимум с помощью SmallChange. В классических сценариях использования ScrollBar это не принципиально и не расценивается как баг.
Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!
- Помечено в качестве ответа Abolmasov Dmitry 17 августа 2012 г. 9:50
8 августа 2012 г. 8:21Отвечающий -
Я не стал бы заводить данный вопрос если бы все было именно так, но как ни странно, стрелочки вправо/вниз так же не достигают максимального значения. метод отрабатывает, значения меняются, но до максимума не дотягивает
- Изменено Sergey-Wizard 8 августа 2012 г. 8:27
8 августа 2012 г. 8:25 -
Я немного спутал для чего нужно LargeChange, поэтому ошибся с подгонкой стрелочками. А в остальном мой ответ актуален. Для получения занчения при движении ползунка нужен TrackBar. В ScrollBar же нельзя установить Maximum ручками, можно только из кода. Читайте заметки здесь. Опережая ваш вопрос "Почему так?". Ну видать были на то причины при создании контрола.
Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!
- Изменено LXGDARKEditor 8 августа 2012 г. 8:47
- Предложено в качестве ответа LXGDARKEditor 9 августа 2012 г. 14:37
- Помечено в качестве ответа Abolmasov Dmitry 17 августа 2012 г. 9:50
8 августа 2012 г. 8:46Отвечающий -
Не забывайте отмечать ответ (ответы), решающий вашу проблему. Спасибо
Для связи [mail]
17 августа 2012 г. 9:51