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это свойство позволяет контейнеру иметь виртуальный размер, превышающий его видимые границы.
Замечание
В Windows Forms, когда дочерний элемент управления привязан к правому или нижнему краю (содержит или) контейнер будет вести себя так, как если AutoScroll бы он был заданfalse.BottomRightControl
В настоящее время существует ограничение в Windows Forms, которое предотвращает правильное действие всех классов, производных от ScrollableControl правильного действия, если RightToLeft оба параметра включены и AutoScroll заданы true. Например, предположим, что вы размещаете элемент управления, например Panel , или класс контейнера, производный от Panel (например FlowLayoutPanel , или TableLayoutPanel) в форме. Если в контейнере задано AutoScroll значение, а затем задать Anchor свойство для одного или нескольких элементов управления внутри контейнераRight, то полоса прокрутки никогда не отображается.true Класс, производный от ScrollableControl действий, как если бы AutoScroll был задан false. В настоящее время единственным решением является вложение внутри другого ScrollableControlScrollableControl. Например, если вам нужно TableLayoutPanel работать в этой ситуации, его можно поместить внутри Panel элемента управления и установить AutoScroll для него Panel значение true.
Замечание
AutoScroll автоматически сохраняет видимость полос прокрутки. Таким образом, если HScroll включен параметр или VScroll свойство true , не влияет AutoScroll .