ScrollableControl.AutoScroll Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene o imposta un valore che indica se il contenitore consentirà all'utente di scorrere i controlli posizionati all'esterno dei limiti visibili.
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
Valore della proprietà
true
se il contenitore consente lo scorrimento automatico; in caso contrario, false
. Il valore predefinito è false
.
Esempio
Nell'esempio di codice seguente viene illustrato come le barre di scorrimento orizzontale e/o verticale vengono fornite automaticamente in base alle esigenze quando la AutoScroll proprietà è impostata su true
. Per eseguire l'esempio, seguire questa procedura:
Creare una nuova applicazione Windows Forms.
Aggiungere un tipo Panel al form.
Aggiungere un TextBox oggetto al pannello e denominarlo
text1
.Spostare la casella di testo in modo che la parte destra si estenda oltre il bordo destro del pannello.
Verrà visualizzata solo una struttura della parte della casella di testo esterna ai limiti del pannello. Se l'intera casella di testo è visibile, la casella di testo si trova nel modulo e non nel pannello.
Aggiungere un tipo Button al form.
Aggiungere un gestore per l'evento
Click
del pulsante.Aggiungere il codice di esempio seguente e chiamarlo dal gestore del
Click
pulsante.
Quando si esegue l'esempio, è possibile visualizzare solo la parte della casella di testo che si trova all'interno dei limiti del pannello. Quando si fa clic sul pulsante, viene visualizzata una barra di scorrimento orizzontale che consente di visualizzare il resto della casella di testo.
Se si posiziona una parte della casella di testo sotto la parte inferiore del pannello, quando si fa clic sul pulsante verrà visualizzata una barra di scorrimento verticale.
Il codice di esempio controlla se la casella di testo non rientra nei limiti del pannello prima di impostare la AutoScroll proprietà su true
e prima di impostare la AutoScrollMargin proprietà . Questo controllo out-of-bounds non è obbligatorio. Se AutoScroll è impostato su true
, non verrà visualizzata alcuna barra di scorrimento quando la casella di testo è completamente all'interno del pannello. Inoltre, è possibile lasciare i margini nelle impostazioni predefinite di 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
Commenti
Quando true
, questa proprietà consente al contenitore di avere una dimensione virtuale maggiore dei limiti visibili.
Nota
In Windows Forms quando un controllo figlio è ancorato a destra o in basso (Control contiene Right o Bottom) il contenitore si comporta come se AutoScroll fosse impostato su false
.
Esiste attualmente una limitazione in Windows Form che impedisce il corretto funzionamento di tutte le classi derivate da ScrollableControl quando RightToLeft è abilitato e AutoScroll è impostato su true
. Si supponga, ad esempio, di posizionare un controllo, Panel ad esempio , o una classe contenitore derivata da Panel (ad esempio FlowLayoutPanel o TableLayoutPanel) nel modulo. Se si imposta AutoScroll nel contenitore su true
e si imposta la proprietà Anchor di uno o più controlli all'interno del contenitore su Right, non verrà visualizzata alcuna barra di scorrimento. La classe derivata da ScrollableControl agisce come se AutoScroll fosse impostato su false
. Attualmente, l'unica soluzione alternativa consiste nell'annidare ScrollableControl in un altro ScrollableControl. Ad esempio, se è necessario TableLayoutPanel per lavorare in questa situazione, è possibile inserirlo all'interno di un controllo Panel e impostare AutoScroll in Panel su true
.
Nota
AutoScroll mantiene automaticamente la visibilità delle barre di scorrimento. Pertanto, l'impostazione della HScroll proprietà o VScroll su true
non ha alcun effetto quando AutoScroll è abilitata.