ScrollableControl.AutoScroll Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 true
en . Para ejecutar el ejemplo, siga estos pasos:
Cree una nueva aplicación Windows Forms.
Agregue un control Panel al formulario.
Agregue un TextBox elemento al panel y asígnele
text1
el nombre .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.
Agregue un control Button al formulario.
Agregue un controlador para el
Click
evento del botón.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 true
en y antes de establecer la AutoScrollMargin propiedad . Esta comprobación fuera de límite no es necesaria. Si AutoScroll se establece true
en , 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 false
en .
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.