Автопрокрутка панели С# не работает
У меня есть панель с изображением на ней. Когда содержимое картинки слишком велико, мне нужны полосы прокрутки. Я установил для параметра autoscroll значение true на панели. Но когда содержимое фотобумаги больше, чем высота панели/изображения, полосы прокрутки не отображаются.
Моя панель закреплена сверху, слева, снизу, справа. Картинка также закреплена сверху, слева, внизу, справа.
Ответы
Ответ 1
Вам нужно установить свойство SizeMode
на AutoSize
, что заставляет PictureBox автоматически изменять размер изображения.
И я думаю, вы должны сбросить якоря и только привязать к левому верхнему краю. Остальное заботится автоматически панелью. Поскольку в противном случае PictureBox, вероятно, соблюдает привязки, неспособный изменить размер больше, чем содержащаяся в нем панель, что опять не приведет к появлению прокрутки.
Ответ 2
От MSDN:
В Windows Forms существует ограничение, запрещающее всем классам, полученным из ScrollableControl
, действовать корректно, когда оба RightToLeft
включены, а AutoScroll
- True
. Например, предположим, что вы поместите элемент управления, например Panel
, или класс контейнера, полученный из Panel
(например, FlowLayoutPanel
или TableLayoutPanel
) - в вашу форму. Если вы установили AutoScroll
в контейнер на True
, а затем установите свойство Anchor
на одном или нескольких элементах управления внутри контейнера на Right
, тогда никакая полоса прокрутки никогда не появится. Класс, полученный из ScrollableControl
, действует так, как если бы AutoScroll
были установлены на False
.
Ответ 3
Картинка не должна быть привязана снизу и справа. Вместо этого измените его размер на отображаемый контент.
Ответ 4
Для меня ниже код помог в добавлении полосы прокрутки:
Panel2.Controls.Clear();
Panel2.AutoScroll = false;
Panel2.VerticalScroll.Enabled = true;
Panel2.VerticalScroll.Visible = true;
Panel2.AutoScroll = true;
Ответ 5
Измените стиль панели границ на фиксированный одиночный, а затем свойство автоматического прокрутки панели на True.