Windows: как сделать так, чтобы полоса прокрутки панели была в ТОП положении при загрузке формы - PullRequest
4 голосов
/ 17 июля 2009

В форме окна - есть панель, в которую был добавлен текстовый элемент управления. При открытии формы мне нужно, чтобы полоса прокрутки панели находилась в ТОП позиции, т.е. рядом с первым элементом управления. Теперь, когда форма открыта, полоса прокрутки панели находится на BOTTOM.ie., На последнем элементе управления.

Ответы [ 6 ]

7 голосов
/ 02 мая 2013

Вам нужно выбрать первый элемент вашей панели, чтобы вертикальная полоса прокрутки появилась сверху:

firstElement.Select();
6 голосов
/ 17 июля 2009

При загрузке попробуйте установить для свойства панели VerticalScroll значение 0

.

panel1.VerticalScroll.Value = 0;

РЕДАКТИРОВАТЬ : при условии, что у вас есть panel1.AutoScroll = true

Установка значения вертикальной прокрутки в 0 приведет к прокрутке вверх, однако вертикальный ползунок - нет.

Кроме того, возможно, у вас есть какой-то элемент управления в нижней части панели, который получает фокус (который должен заставить панель прокручиваться вниз). Установка фокуса на текстовое поле в верхней части панели будет держать прокрутку сверху. (но опять же, может быть, вы не хотите устанавливать фокус на элемент управления сверху)

1 голос
/ 25 апреля 2017

У меня была такая же проблема, но с моим собственным пользовательским контролем. Я перепробовал много вещей, чтобы заставить панель прокручиваться к вершине после заполнения ее множеством элементов управления.

Что бы я ни делал, панель VScroll всегда помещалась внизу.

После исчерпывающего тестирования я обнаружил, что причина в том, что у моих элементов управления свойство TabStop , установленное в значение true (по умолчанию для пользовательских элементов управления), вызывало проблему.

Установка TabStop на false Исправлено.

0 голосов
/ 22 марта 2019

В моем случае я использую следующий код

//to initialize the position of the panel 
panel5.AutoScrollPosition = new Point(panel5.AutoScrollPosition.X, 0);
//to initialize the position of the scroll bar
VScrollBar1.Value = 0;
0 голосов
/ 16 сентября 2018

У меня был случай, когда я работал над приложением для покупок, у меня был список элементов UserControl, который содержал вертикальный список позиций UserControl s (все Dock=DockStyle.Top, если это рисует картину), и Я отправлял список элементов в метод в элементе управления списком элементов и просто создавал и добавлял все элементы управления на панель.

Мало того, что элемент управления прокручивался до самого конца, все элементы были в обратном порядке. Список был отсортирован в правильном порядке, но когда я отправил каждый из них в метод ItemListControl.Controls.Add(), он разместил их в обратном порядке. Я исправил это, используя SetChildIndex(), чтобы расположить их в обратном порядке.

public void Add(ItemControl itemControl)
{
    _itemPanel.Controls.Add(itemControl);
    _itemPanel.Controls.SetChildIndex(itemControl, 0);
}

Теперь, когда я думаю об этом, DockStyle.Top может быть причиной того, что они добавляются в обратном порядке. Трудно сказать, потому что, если я изменю DockStyle на что-то другое, не все элементы управления будут отображаться.

В любом случае, размещение элементов управления в правильном порядке решило проблему с прокруткой.

0 голосов
/ 10 января 2018

Если в форму добавлено много элементов управления, установите свойство tabIndex последовательно сверху вниз. полоса прокрутки будет установлена ​​сверху, если какой-либо индекс вкладок верхнего элемента управления меньше, чем индекс вкладок любого из индекса вкладок нижнего элемента управления. Это решило мою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...