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.

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. El valor predeterminado es false.

Ejemplos

En el ejemplo de código siguiente se muestra cómo se proporcionan automáticamente las barras de desplazamiento horizontales o verticales según sea necesario cuando la AutoScroll propiedad se establece trueen . Para ejecutar el ejemplo, siga estos pasos:

  1. Cree una nueva aplicación Windows Forms.

  2. Agregue un control Panel al formulario.

  3. Agregue un TextBox elemento al panel y asígnele text1el nombre .

  4. Mueva el cuadro de texto para que la parte derecha se extienda más allá del borde derecho del panel.

    Solo debería ver un contorno de la parte del cuadro de texto que está fuera de los límites del panel. Si el cuadro de texto completo está visible, el cuadro de texto está en el formulario y no en el panel.

  5. Agregue un control Button al formulario.

  6. Agregue un controlador para el Click evento del botón.

  7. Agregue el código de ejemplo siguiente y llámelo desde el controlador del Click botón.

Al ejecutar el ejemplo, solo puede ver la parte del cuadro de texto que está dentro de los límites del panel. Al hacer clic en el botón, verá que aparece una barra de desplazamiento horizontal que le permitirá ver el resto del cuadro de texto.

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.

El código de ejemplo comprueba si el cuadro de texto está fuera de los límites del panel antes de establecer la AutoScroll propiedad trueen y antes de establecer la AutoScrollMargin propiedad . Esta comprobación fuera de límite no es necesaria. Si AutoScroll se establece trueen , no aparecerá ninguna barra de desplazamiento cuando el cuadro de texto esté completamente dentro del panel. Además, puede dejar los márgenes en su configuración predeterminada de 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 true, esta propiedad permite al contenedor tener un tamaño virtual mayor que sus límites visibles.

Nota

En Windows Forms cuando un control secundario está anclado a la derecha o abajo (Control contiene Right o Bottom) el contenedor se comportará como si AutoScroll estuviera establecido falseen .

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 true. Por ejemplo, supongamos que coloca un control como Panel , o una clase de contenedor derivada de Panel (como FlowLayoutPanel o TableLayoutPanel) en el formulario. Si establece AutoScroll en el contenedor como true 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. La clase derivada de ScrollableControl actúa como si AutoScroll estuviera establecida como false. Actualmente, la única solución es anidar ScrollableControl dentro de otro 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 true.

Nota

AutoScroll mantiene la visibilidad de las barras de desplazamiento automáticamente. Por lo tanto, establecer la HScroll propiedad true o VScroll en no tiene ningún efecto cuando AutoScroll está habilitado.

Se aplica a

Consulte también