ScrollableControl.AutoScroll Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera lub ustawia wartość wskazującą, czy kontener umożliwia użytkownikowi przewinięcie do wszystkich kontrolek umieszczonych poza widocznymi granicami.
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
Wartość właściwości
true
jeśli kontener włącza automatyczne przewijanie; w przeciwnym razie , false
. Wartość domyślna to false
.
Przykłady
Poniższy przykład kodu pokazuje, jak poziome i/lub pionowe paski przewijania są dostarczane automatycznie w razie potrzeby, gdy właściwość jest ustawiona AutoScroll na true
. Aby uruchomić przykład, wykonaj następujące kroki:
Utwórz nową aplikację Windows Forms.
Dodaj element Panel do formularza.
Dodaj element TextBox do panelu i nadaj mu
text1
nazwę .Przenieś pole tekstowe, aby prawa część wykraczała poza prawą krawędź panelu.
Powinien zostać wyświetlony tylko kontur części pola tekstowego, który znajduje się poza granicami panelu. Jeśli całe pole tekstowe jest widoczne, pole tekstowe znajduje się w formularzu, a nie w panelu.
Dodaj element Button do formularza.
Dodaj procedurę obsługi dla
Click
zdarzenia przycisku.Dodaj poniższy przykładowy kod i wywołaj go z procedury obsługi przycisku
Click
.
Po uruchomieniu przykładu można zobaczyć tylko część pola tekstowego, która znajduje się wewnątrz granic panelu. Po kliknięciu przycisku zostanie wyświetlony poziomy pasek przewijania, który umożliwi wyświetlenie reszty pola tekstowego.
Jeśli umieścisz część pola tekstowego poniżej dołu panelu, po kliknięciu przycisku zobaczysz pionowy pasek przewijania.
Przykładowy kod sprawdza, czy pole tekstowe znajduje się poza granicami panelu przed ustawieniem AutoScroll właściwości na true
, a przed ustawieniem AutoScrollMargin właściwości . To sprawdzanie poza granicami nie jest wymagane. Jeśli AutoScroll jest ustawiona wartość true
, żadne paski przewijania nie będą wyświetlane, gdy pole tekstowe jest całkowicie w panelu. Ponadto można pozostawić marginesy na domyślnych ustawieniach 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
Uwagi
Gdy true
ta właściwość umożliwia kontenerowi posiadanie rozmiaru wirtualnego, który jest większy niż jego widoczne granice.
Uwaga
W Windows Forms, gdy kontrolka podrzędna jest zakotwiczona w prawym lub dolnym (Control zawiera Right lub Bottom) kontener będzie zachowywać się tak, jakby AutoScroll ustawiono wartość false
.
Obecnie istnieje ograniczenie w Windows Forms, które uniemożliwia prawidłowe działanie wszystkich klas pochodnych po ScrollableControl włączeniu obu RightToLeft klas i AutoScroll jest ustawiona na true
wartość . Załóżmy na przykład, że umieszczasz kontrolkę, taką jak Panel — lub klasę kontenera pochodzącą z Panel (np FlowLayoutPanel . lub TableLayoutPanel) — na formularzu. Jeśli ustawisz AutoScroll dla kontenera true
wartość , a następnie ustawisz Anchor właściwość na co najmniej jednej kontrolki wewnątrz kontenera na Rightwartość , pasek przewijania nigdy nie pojawi się. Klasa pochodzi z ScrollableControl aktów, tak jakby AutoScroll została ustawiona na false
wartość . Obecnie jedynym obejściem jest zagnieżdżanie ScrollableControl wewnątrz innego ScrollableControlelementu . Jeśli na przykład musisz TableLayoutPanel pracować w tej sytuacji, możesz umieścić ją w kontrolce Panel i ustawić AutoScroll true
na .Panel
Uwaga
AutoScroll automatycznie zachowuje widoczność pasków przewijania. W związku z tym ustawienie HScroll właściwości true
or VScroll nie ma wpływu, gdy AutoScroll jest włączone.