ScrollableControl.AutoScroll Propriedade

Definição

Recebe ou define um valor que indica se o contentor permite ao utilizador deslocar-se até quaisquer controlos colocados fora dos seus limites visíveis.

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

Valor de Propriedade

true se o contentor permitir o deslocamento automático; caso contrário, false. O valor predefinido é false.

Exemplos

O exemplo de código seguinte mostra como as barras de scroll horizontais e/ou verticais são fornecidas automaticamente conforme necessário quando a AutoScroll propriedade está definida para true. Para executar o exemplo, siga estes passos:

  1. Crie um novo aplicativo do Windows Forms.

  2. Adicione um Panel ao formulário.

  3. Adicione um a TextBox ao painel e nomeie-o text1.

  4. Mova a caixa de texto para que a parte direita se estenda para além da borda direita do painel.

    Deves ver apenas o contorno da parte da caixa de texto que está fora dos limites do painel. Se toda a caixa de texto estiver visível, a caixa de texto está no formulário e não no painel.

  5. Adicione um Button ao formulário.

  6. Adicione um handler para o Click evento do botão.

  7. Adicione o seguinte código de exemplo e chame-o a partir do handler do Click botão.

Quando executas o exemplo, só consegues ver a parte da caixa de texto que está dentro dos limites do painel. Ao clicar no botão, verá aparecer uma barra de deslocamento horizontal que permite ver o resto da caixa de texto.

Se posicionar uma parte da caixa de texto abaixo da parte inferior do painel, verá uma barra de scroll vertical ao clicar no botão.

O código de exemplo verifica se a caixa de texto está fora dos limites do painel antes de definir a AutoScroll propriedade para true, e antes de definir a AutoScrollMargin propriedade. Esta verificação fora de limites não é obrigatória. Se AutoScroll estiver definido para true, não aparecerão barras de deslocamento quando a caixa de texto estiver completamente dentro do painel. Além disso, podes deixar as margens nas definições padrão 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

Observações

Quando true, esta propriedade permite que o contentor tenha um tamanho virtual maior do que os seus limites visíveis.

Note

Em Windows Forms, quando um controlo filho está ancorado à direita ou ao fundo (Control contém Right ou Bottom), o Contentor comporta-se como se AutoScroll estivesse definido para false.

Atualmente, há uma limitação no Windows Forms que impede que todas as classes derivadas do ScrollableControl atuem corretamente quando o RightToLeft estiver habilitado e AutoScroll estiver definido como true. Por exemplo, digamos que colocas um controlo como Panel - ou uma classe de contentor derivada de Panel (como FlowLayoutPanel ou TableLayoutPanel) - no teu formulário. Se você definir AutoScroll no contêiner como true e, em seguida, definir a propriedade Anchor em um ou mais dos controles dentro do contêiner como Right, nenhuma barra de rolagem será exibida. A classe derivada de ScrollableControl age como se AutoScroll estivesse definida para false. Atualmente, a única alternativa é colocar o ScrollableControl dentro de outro ScrollableControl. Por exemplo, se você precisar de TableLayoutPanel para trabalhar nessa situação, você pode colocá-lo dentro de um controle de Panel e definir AutoScroll no Panel para true.

Note

AutoScroll mantém automaticamente a visibilidade das barras de deslocamento. Portanto, definir a HScroll propriedade ou VScroll para true não tem efeito quando AutoScroll está ativado.

Aplica-se a

Ver também