ScrollableControl.AutoScroll Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает или задает значение, указывающее, позволяет ли пользователь прокручивать все элементы управления, расположенные за пределами видимых границ.
public:
virtual property bool AutoScroll { bool get(); void set(bool value); };
public virtual bool AutoScroll { get; set; }
member this.AutoScroll : bool with get, set
Public Overridable Property AutoScroll As Boolean
Значение свойства
true Значение , если контейнер включает автоматическую прокрутку; falseв противном случае . Значение по умолчанию — false.
Примеры
В следующем примере кода показано, как горизонтальные и (или) вертикальные полосы прокрутки предоставляются автоматически при необходимости, если AutoScroll для свойства задано значение true. Чтобы запустить пример, выполните следующие действия.
Создайте новое приложение Windows Forms.
Добавьте Panel в форму.
Добавьте на TextBox панель и назовите ее
text1.Переместите текстовое поле, чтобы правая часть простирается за правым краем панели.
Вы увидите только контур части текстового поля, которая находится за пределами границ панели. Если отображается все текстовое поле, текстовое поле находится в форме, а не на панели.
Добавьте Button в форму.
Добавьте обработчик события
Clickкнопки.Добавьте следующий пример кода и вызовите его из обработчика
Clickкнопки.
При запуске примера можно увидеть только часть текстового поля, расположенную в границах панели. При нажатии кнопки появится горизонтальная полоса прокрутки, которая позволит увидеть остальную часть текстового поля.
Если вы размещаете часть текстового поля под нижней частью панели, при нажатии кнопки появится вертикальная полоса прокрутки.
Пример кода проверяет, находится ли текстовое поле за пределами границ панели, прежде чем оно задает AutoScroll для свойства trueзначение, и прежде чем задать AutoScrollMargin свойство. Эта внеграничная проверка не требуется. Если AutoScroll задано значение true, полосы прокрутки не будут отображаться, когда текстовое поле полностью находится на панели. Кроме того, вы можете оставить поля по умолчанию в параметрах 0,0.
void SetAutoScrollMargins()
{
/* If the text box is outside the panel's bounds,
turn on auto-scrolling and set the margin. */
if ( text1->Location.X > panel1->Location.X || text1->Location.Y > panel1->Location.Y )
{
panel1->AutoScroll = true;
/* If the AutoScrollMargin is set to less
than (5,5), set it to 5,5. */
if ( panel1->AutoScrollMargin.Width < 5 || panel1->AutoScrollMargin.Height < 5 )
{
panel1->SetAutoScrollMargin( 5, 5 );
}
}
}
private void SetAutoScrollMargins()
{
/* If the text box is outside the panel's bounds,
turn on auto-scrolling and set the margin. */
if (text1.Location.X > panel1.Location.X ||
text1.Location.Y > panel1.Location.Y)
{
panel1.AutoScroll = true;
/* If the AutoScrollMargin is set to less
than (5,5), set it to 5,5. */
if( panel1.AutoScrollMargin.Width < 5 ||
panel1.AutoScrollMargin.Height < 5)
{
panel1.SetAutoScrollMargin(5, 5);
}
}
}
Private Sub SetAutoScrollMargins()
' If the text box is outside the panel's bounds,
' turn on auto-scrolling and set the margin.
If (text1.Location.X > panel1.Location.X) Or _
(text1.Location.Y > panel1.Location.Y) Then
panel1.AutoScroll = True
' If the AutoScrollMargin is set to less
' than (5,5), set it to 5,5.
If (panel1.AutoScrollMargin.Width < 5) Or _
(panel1.AutoScrollMargin.Height < 5) Then
panel1.SetAutoScrollMargin(5, 5)
End If
End If
End Sub
Комментарии
Если trueэто свойство позволяет контейнеру иметь виртуальный размер, превышающий его видимые границы.
Note
В Windows Forms, когда дочерний элемент управления привязан к правому или нижнему краю (содержит или) контейнер будет вести себя так, как если Control бы он был заданRight.BottomAutoScrollfalse
В настоящее время в Windows Forms существует ограничение, препятствующее правильной работе всех классов, производных от ScrollableControl, когда RightToLeft включен и AutoScroll установлен в true. Например, предположим, что вы размещаете элемент управления, например Panel , или класс контейнера, производный от Panel (например FlowLayoutPanel , или TableLayoutPanel) в форме. Если задать в контейнере AutoScroll как true, а затем для одного или нескольких элементов управления внутри контейнера задать свойство Anchor как Right, то полоса прокрутки никогда не отображается. Класс, производный от ScrollableControl, действует так, как если бы AutoScroll был установлен в false. В настоящее время единственным решением является вложить ScrollableControl внутрь ScrollableControl. Например, если в этой ситуации необходимо, чтобы TableLayoutPanel работал, его можно поместить внутрь элемента управления Panel и установить параметр AutoScroll на Panel со значением true.
Note
AutoScroll автоматически сохраняет видимость полос прокрутки. Таким образом, если HScroll включен параметр или VScroll свойство true , не влияет AutoScroll .