ScrollableControl.AutoScroll Vlastnost

Definice

Získá nebo nastaví hodnotu určující, zda kontejner umožňuje uživateli posunout se na jakékoli ovládací prvky umístěné mimo jeho viditelné hranice.

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

Hodnota vlastnosti

truepokud kontejner povolí automatické posouvání; v opačném případě . false Výchozí hodnota je false.

Příklady

Následující příklad kódu ukazuje, jak vodorovné a/nebo svislé posuvníky jsou poskytovány automaticky podle potřeby, když AutoScroll je vlastnost nastavena na true. Pokud chcete spustit příklad, postupujte takto:

  1. Vytvořte novou aplikaci model Windows Forms.

  2. Přidejte do formuláře Panel.

  3. Přidejte na panel a TextBox pojmenujte ho text1.

  4. Přesuňte textové pole tak, aby pravá část přesahuje pravý okraj panelu.

    Měli byste vidět jenom obrys části textového pole, která je mimo hranice panelu. Pokud je celé textové pole viditelné, je textové pole ve formuláři a ne na panelu.

  5. Přidejte do formuláře Button.

  6. Přidejte obslužnou rutinu události Click tlačítka.

  7. Přidejte následující ukázkový kód a zavolejte ho z obslužné rutiny Click tlačítka.

Když spustíte příklad, uvidíte jenom část textového pole, která je uvnitř hranic panelu. Po kliknutí na toto tlačítko se zobrazí vodorovný posuvník, který vám umožní zobrazit zbytek textového pole.

Pokud umístíte část textového pole pod dolní část panelu, zobrazí se po kliknutí na tlačítko svislý posuvník.

Ukázkový kód zkontroluje, zda je textové pole mimo hranice panelu před tím, než nastaví AutoScroll vlastnost na true, a před tím, než nastaví AutoScrollMargin vlastnost. Tato kontrola mimo hranice není nutná. Pokud AutoScroll je nastavená hodnota true, nezobrazí se žádné posuvníky, když je textové pole zcela v panelu. Můžete také ponechat okraje ve výchozím nastavení 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

Poznámky

Když truetato vlastnost umožňuje kontejneru mít virtuální velikost, která je větší než jeho viditelné hranice.

Note

Ve model Windows Forms, když je podřízený ovládací prvek ukotvený vpravo nebo dole (Controlobsahuje Right neboBottom) se kontejner bude chovat, jako by AutoScroll byl nastaven .false

V současné době platí omezení v modelu model Windows Forms, které brání všem třídám odvozeným z ScrollableControl, aby správně fungovaly, pokud je povolena RightToLeft i AutoScroll je nastavena na true. Řekněme například, že do formuláře umístíte ovládací prvek, například Panel třídu kontejneru odvozenou z Panel formuláře (například FlowLayoutPanel nebo TableLayoutPanel). Pokud nastavíte AutoScroll v kontejneru na true a pak nastavíte vlastnost Anchor u jednoho nebo více ovládacích prvků uvnitř kontejneru na Right, pak se nikdy nezobrazí posuvník. Třída odvozená z ScrollableControl funguje, jako by byla AutoScroll nastavena na false. Jediným alternativním řešením je vnořit ScrollableControl uvnitř jiného ScrollableControl. Pokud například potřebujete, aby TableLayoutPanel fungoval v této situaci, můžete ho umístit do ovládacího prvku Panel a nastavit AutoScroll na Panel jako true.

Note

AutoScroll udržuje viditelnost posuvníků automaticky. Proto nastavení HScroll nebo VScroll vlastnosti true nemá žádný vliv, pokud AutoScroll je povoleno.

Platí pro

Viz také