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