ScrollableControl.AutoScroll Propiedad

Definición

Obtiene o establece un valor que indica si el contenedor permitirá que el usuario se desplace a los controles situados fuera de los límites visibles.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

Valor de propiedad

true si el contenedor permite el desplazamiento automático; en caso contrario, false.true if the container enables auto-scrolling; otherwise, false. El valor predeterminado es false.The default value is false.

Ejemplos

En el ejemplo de código siguiente se muestra cómo las barras de desplazamiento horizontal y/o vertical se proporcionan AutoScroll automáticamente según sea necesario truecuando la propiedad está establecida en.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. Para ejecutar el ejemplo, siga estos pasos:To run the example, follow these steps:

  1. Cree una nueva aplicación de Windows Forms.Create a new Windows Forms application.

  2. Agregue un control Panel al formulario.Add a Panel to the form.

  3. Agregue al panel y asígnele el nombre text1. TextBoxAdd a TextBox to the panel and name it text1.

  4. Mueva el cuadro de texto para que la parte derecha se extienda más allá del borde derecho del panel.Move the text box so that the right part extends beyond the right edge of the panel.

    Solo debería ver un contorno de la parte del cuadro de texto que está fuera de los límites del panel.You should see only an outline of the part of the text box that is outside the bounds of the panel. Si todo el cuadro de texto está visible, el cuadro de texto se encuentra en el formulario y no en el panel.If the whole text box is visible, the text box is on the form and not in the panel.

  5. Agregue un control Button al formulario.Add a Button to the form.

  6. Agregue un controlador para el Click evento del botón.Add a handler for the Click event of the button.

  7. Agregue el siguiente código de ejemplo y llámelo desde el controlador Click del botón.Add the following example code and call it from the button's Click handler.

Al ejecutar el ejemplo, solo puede ver la parte del cuadro de texto que se encuentra dentro de los límites del panel.When you run the example, you can only see the part of the text box that is inside the boundaries of the panel. Al hacer clic en el botón, aparece una barra de desplazamiento horizontal que le permitirá ver el resto del cuadro de texto.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.

Si coloca una parte del cuadro de texto debajo de la parte inferior del panel, verá una barra de desplazamiento vertical al hacer clic en el botón.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.

En el código de ejemplo se comprueba si el cuadro de texto está fuera de los límites del panel antes de establecer AutoScroll la propiedad trueen y antes de establecer la AutoScrollMargin propiedad.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. Esta comprobación fuera de los límites no es necesaria.This out-of-bounds check is not required. Si AutoScroll está establecido en true, no aparecerá ninguna barra de desplazamiento cuando el cuadro de texto esté completamente dentro del panel.If AutoScroll is set to true, no scroll bars will appear when the text box is completely within the panel. Además, puede dejar los márgenes en su configuración predeterminada de 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

Comentarios

Cuando truees, esta propiedad permite que el contenedor tenga un tamaño virtual mayor que los límites visibles.When true, this property enables the container to have a virtual size that is larger than its visible boundaries.

Actualmente hay una limitación en Windows Forms que impide que todas las clases derivadas de ScrollableControl actúen correctamente cuando RightToLeft está habilitado y AutoScroll se establece como 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. Por ejemplo, supongamos que coloca Panel un control como, o una clase de contenedor derivada de Panel (como FlowLayoutPanel o TableLayoutPanel), en el formulario.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. Si establece AutoScroll en el contenedor como Yes y, luego, establece la propiedad Anchor en uno o varios de los controles del contenedor como Right, no aparecerá ninguna barra de desplazamiento en ningún momento.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. La clase derivada de ScrollableControl actúa como si AutoScroll estuviera establecida como No.The class derived from ScrollableControl acts as if AutoScroll were set to No.

Actualmente, la única solución es anidar ScrollableControl dentro de otro ScrollableControl.Currently, the only workaround is to nest the ScrollableControl inside another ScrollableControl. Por ejemplo, si necesita que TableLayoutPanel funcione en esta situación, puede colocarlo dentro de un control Panel y establecer AutoScroll en el Panel como 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.

Nota

AutoScrollmantiene la visibilidad de las barras de desplazamiento automáticamente.AutoScroll maintains the visibility of the scrollbars automatically. Por lo tanto, HScroll el VScroll establecimiento de true la propiedad o en AutoScroll no tiene ningún efecto cuando se habilita.Therefore, setting the HScroll or VScroll property to true has no effect when AutoScroll is enabled.

Se aplica a

Consulte también: