2008-09-25 2 views
0

У меня есть несколько панелей в одном окне в приложении C#, и я создал 2 полосы прокрутки, одну для горизонтальной и одной вертикальной. Это то, что я в настоящее время:Как манипулировать LargeChange и SmallChange на полосе прокрутки для работы

picture with 2 scroolbars http://www.simnet.is/elinnils52/scrollbar.jpg

У меня есть 1 переменной и это общая высота все элементы принимают & необходимость. Вот мой код на изменение прокрутки:

for (int i = 0; i < this._splitMainView.Panel2.Controls.Count; i++) 
{ 
    this._splitMainView.Panel2.Controls[i].Location = new Point(
     3 - _scrollBarX.Value, 
     3 + (132 + 6) * (i - 2) - _scrollBarY.Value); 
    this._splitMainView.Panel2.Controls[i].Refresh(); 
} 

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

Как вы можете видеть на картинке, это выглядит не очень хорошо. Даже если максимум в этом случае составляет около 50-100 пикселей, он по-прежнему выглядит как тысяча страниц. Когда я меняю SmallChange и LargeChange, сама полоса полосы прокрутки удлиняется, но тогда она не достигает максимальных пикселей. Он сможет получить почти в конце (зависит от значения SmallChange и LargeChange) и оставьте вокруг 5-29 пикселей влево. И, как известно, вид половины не очень хорош.

Кто-нибудь знает, как преодолеть это препятствие или лучший способ его реализовать?

ответ

1

Почему бы просто не сделать максимальное значение полосы прокрутки переполнением (высота видимой области - высота панели)? Затем просто установите верхнюю часть панели в значение полосы прокрутки * -1.

0

Есть ли причина не использовать свойство AutoScroll?

Смежные вопросы