ScrollableControl.AutoScroll ScrollableControl.AutoScroll ScrollableControl.AutoScroll ScrollableControl.AutoScroll Property

Определение

Получает или задает значение, указывающее, будет ли контейнер давать возможность пользователю выполнять прокрутку любых элементов управления, помещенных вне его отображаемых границ.Gets or sets a value indicating whether the container enables the user to scroll to any controls placed outside of its visible boundaries.

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.true if the container enables auto-scrolling; otherwise, false. Значение по умолчанию — false.The default value is false.

Примеры

В следующем примере кода показано, как горизонтальные и (или) вертикальные полосы прокрутки предоставляются AutoScroll автоматически при необходимости, trueесли свойство имеет значение.The following code example shows how horizontal and/or vertical scroll bars are provided automatically as needed when the AutoScroll property is set to true. Чтобы запустить пример, выполните следующие действия.To run the example, follow these steps:

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

  2. Добавьте на форму элемент Panel.Add a Panel to the form.

  3. Добавьте на панель и присвойте ему text1имя. TextBoxAdd a TextBox to the panel and name it text1.

  4. Переместите текстовое поле, чтобы правая часть выходила за правый предел панели.Move the text box so that the right part extends beyond the right edge of the panel.

    Вы увидите только часть текстового поля, находящегося за границами панели.You should see only an outline of the part of the text box that is outside the bounds of the panel. Если текстовое поле отображается целиком, текстовое поле находится в форме, а не на панели.If the whole text box is visible, the text box is on the form and not in the panel.

  5. Добавьте на форму элемент Button.Add a Button to the form.

  6. Добавьте обработчик для Click события кнопки.Add a handler for the Click event of the button.

  7. Добавьте следующий пример кода и вызовите его из Click обработчика кнопки.Add the following example code and call it from the button's Click handler.

При выполнении примера можно увидеть только часть текстового поля, расположенного внутри границ панели.When you run the example, you can only see the part of the text box that is inside the boundaries of the panel. При нажатии кнопки появится горизонтальная полоса прокрутки, позволяющая видеть остальную часть текстового поля.When you click the button, you will see a horizontal scroll bar appear that will enable you to see the rest of the text box.

Если поместить часть текстового поля под нижней границей панели, то при нажатии кнопки отображается вертикальная полоса прокрутки.If you position a part of the text box below the bottom of the panel, you will see a vertical scroll bar when you click the button.

В примере кода проверяется, находится ли текстовое поле вне границ панели перед тем AutoScroll true, как оно задается свойству, AutoScrollMargin и перед заданием свойства.The example code checks to see whether the text box is outside the bounds of the panel before it sets the AutoScroll property to true, and before it sets the AutoScrollMargin property. Эта проверка вне границ не требуется.This out-of-bounds check is not required. Если AutoScroll параметр имеет trueзначение, полосы прокрутки не отображаются, если текстовое поле полностью находится внутри панели.If AutoScroll is set to true, no scroll bars will appear when the text box is completely within the panel. Кроме того, значения по умолчанию для полей можно оставить равными 0, 0.Also, you can leave the margins at their default settings of 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значение, это свойство позволяет контейнеру иметь виртуальный размер, превышающий видимые границы.When true, this property enables the container to have a virtual size that is larger than its visible boundaries.

В настоящее время существует ограничение в Windows Forms, которое блокирует правильную работу всех классов, производных от ScrollableControl, когда включено свойство RightToLeft и для AutoScroll задано значение Yes.There is currently a limitation in Windows Forms that prevents all classes derived from ScrollableControl from acting properly when both RightToLeft is enabled and AutoScroll is set to Yes. Например, предположим, что в форму помещается элемент управления, Panel такой как-или класс контейнера, Panel производный от FlowLayoutPanel ( TableLayoutPanelнапример, или).For example, let's say that you place a control such as Panel - or a container class derived from Panel (such as FlowLayoutPanel or TableLayoutPanel) - on your form. Если задать значение Yes свойства AutoScroll для контейнера, а затем значение Right свойства Anchor для одного или нескольких элементов управления внутри контейнера, то полоса прокрутки не появится вовсе.If you set AutoScroll on the container to Yes and then set the Anchor property on one or more of the controls inside of the container to Right, then no scrollbar ever appears. Класс, производный от ScrollableControl, действует, как если бы свойству AutoScroll было присвоено значение No.The class derived from ScrollableControl acts as if AutoScroll were set to No.

В настоящее время единственным решением является вложение ScrollableControl в другой ScrollableControl.Currently, the only workaround is to nest the ScrollableControl inside another ScrollableControl. Например, если требуется, чтобы класс TableLayoutPanel работал в такой ситуации, можно поместить его в элемент управления Panel и задать для свойства AutoScroll в элементе Panel значение Yes.For instance, if you need TableLayoutPanel to work in this situation, you can place it inside of a Panel control and set AutoScroll on the Panel to Yes.

Примечание

AutoScrollавтоматически сохраняет видимость полос прокрутки.AutoScroll maintains the visibility of the scrollbars automatically. Поэтому установка HScroll свойства или VScroll в true значение не оказывает влияния, если AutoScroll включен.Therefore, setting the HScroll or VScroll property to true has no effect when AutoScroll is enabled.

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

Дополнительно