ScrollableControl.AutoScroll Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Obtient ou définit une valeur indiquant si le conteneur permet à l'utilisateur de faire défiler un contrôle placé en dehors de ses limites 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
Valeur de propriété
true
si le conteneur permet un défilement automatique ; sinon, false
. La valeur par défaut est false
.
Exemples
L’exemple de code suivant montre comment les barres de défilement horizontales et/ou verticales sont fournies automatiquement si nécessaire lorsque la propriété a la AutoScrolltrue
valeur . Pour exécuter l’exemple, procédez comme suit :
Créez une nouvelle application Windows Forms.
Ajoutez un Panel au formulaire.
Ajoutez un TextBox au panneau et nommez-le
text1
.Déplacez la zone de texte afin que la partie droite s’étende au-delà du bord droit du panneau.
Vous ne devez voir qu’un plan de la partie de la zone de texte qui se trouve en dehors des limites du panneau. Si la zone de texte entière est visible, la zone de texte se trouve sur le formulaire et non dans le panneau.
Ajoutez un Button au formulaire.
Ajoutez un gestionnaire pour l’événement
Click
du bouton.Ajoutez l’exemple de code suivant et appelez-le à partir du gestionnaire du
Click
bouton.
Lorsque vous exécutez l’exemple, vous ne pouvez voir que la partie de la zone de texte qui se trouve à l’intérieur des limites du panneau. Lorsque vous cliquez sur le bouton, vous voyez apparaître une barre de défilement horizontale qui vous permettra de voir le reste de la zone de texte.
Si vous positionnez une partie de la zone de texte sous le bas du panneau, une barre de défilement verticale s’affiche lorsque vous cliquez sur le bouton.
L’exemple de code vérifie si la zone de texte se trouve en dehors des limites du panneau avant de définir la AutoScroll propriété sur true
et avant de définir la AutoScrollMargin propriété. Cette vérification hors limites n’est pas obligatoire. Si AutoScroll a la valeur true
, aucune barre de défilement n’apparaît lorsque la zone de texte se trouve entièrement dans le panneau. En outre, vous pouvez laisser les marges à leurs paramètres par défaut 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
Remarques
Quand , true
cette propriété permet au conteneur d’avoir une taille virtuelle supérieure à ses limites visibles.
Notes
Dans Windows Forms lorsqu’un contrôle enfant est ancré à droite ou en bas (Control contient Right ou Bottom) le conteneur se comporte comme s’il AutoScroll était défini sur false
.
Il existe actuellement une limitation dans les Windows Forms qui empêche toutes les classes dérivées de ScrollableControl de se comporter correctement quand la propriété RightToLeft est activée et que AutoScroll a la valeur true
. Par exemple, supposons que vous placez un contrôle tel que Panel - ou une classe de conteneur dérivée de Panel (comme FlowLayoutPanel ou TableLayoutPanel) - sur votre formulaire. Si vous affectez la valeur true
à la propriété AutoScroll sur le conteneur et que vous affectez ensuite la valeur Right à la propriété Anchor sur un ou plusieurs des contrôles à l'intérieur du conteneur, aucune barre de défilement n'est jamais affichée. La classe dérivée de ScrollableControl se comporte comme si AutoScroll avait la valeur false
. Actuellement, la seule solution de contournement consiste à imbriquer le ScrollableControl à l'intérieur d'un autre ScrollableControl. Par exemple, si vous souhaitez que TableLayoutPanel fonctionne dans cette situation, vous pouvez le placer à l'intérieur d'un contrôle Panel et affecter la valeur true
à la propriété AutoScroll sur le Panel.
Notes
AutoScroll maintient automatiquement la visibilité des barres de défilement. Par conséquent, la définition de la HScroll propriété ou VScroll sur n’a true
aucun effet lorsque AutoScroll est activé.