Поделиться через


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присвоено значение . Чтобы запустить этот пример, выполните следующие шаги:

  1. Создайте новое приложение Windows Forms.

  2. Добавьте на форму элемент Panel.

  3. Добавьте на TextBox панель и назовите его text1.

  4. Переместите текстовое поле так, чтобы правая часть расширяла правый край панели.

    Вы должны увидеть только контур части текстового поля, которая находится за пределами панели. Если отображается все текстовое поле, оно находится на форме, а не на панели.

  5. Добавьте на форму элемент Button.

  6. Добавьте обработчик для Click события кнопки.

  7. Добавьте следующий пример кода и вызовите его из обработчика кнопки 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 включен параметр .

Применяется к

См. также раздел