Udostępnij za pośrednictwem


ScrollableControl.AutoScroll Właściwość

Definicja

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

Boolean

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:

  1. Utwórz nową aplikację Windows Forms.

  2. Dodaj element Panel do formularza.

  3. Dodaj element TextBox do panelu i nadaj mu text1nazwę .

  4. 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.

  5. Dodaj element Button do formularza.

  6. Dodaj procedurę obsługi dla Click zdarzenia przycisku.

  7. 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 trueta 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 truewartość . 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 falsewartość . 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 truena .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.

Dotyczy

Zobacz też