ScrollableControl.AutoScroll Propriedade

Definição

Obtém ou define um valor que indica se o contêiner permite que o usuário role até os controles posicionados fora dos 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 da propriedade

Boolean

true se o contêiner permitir a rolagem automática; caso contrário, false. O valor padrão é false.

Exemplos

O exemplo de código a seguir mostra como as barras de rolagem horizontal e/ou vertical são fornecidas automaticamente conforme necessário quando a AutoScroll propriedade é definida como true. Para executar o exemplo, siga estas etapas:

  1. Crie um novo aplicativo Windows Forms.

  2. Adicione um Panel ao formulário.

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

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

    Você deve ver apenas uma estrutura de tópicos da parte da caixa de texto que está fora dos limites do painel. Se a caixa de texto inteira estiver visível, a caixa de texto estará no formulário e não no painel.

  5. Adicione um Button ao formulário.

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

  7. Adicione o código de exemplo a seguir e chame-o do manipulador do Click botão.

Ao executar o exemplo, você só pode ver a parte da caixa de texto que está dentro dos limites do painel. Ao clicar no botão, você verá uma barra de rolagem horizontal que permitirá que você veja o restante da caixa de texto.

Se você posicionar uma parte da caixa de texto abaixo da parte inferior do painel, verá uma barra de rolagem 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 truee antes de definir a AutoScrollMargin propriedade. Essa verificação fora dos limites não é necessária. Se AutoScroll estiver definido como true, nenhuma barra de rolagem será exibida quando a caixa de texto estiver completamente dentro do painel. Além disso, você pode deixar as margens em suas configuraçõ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

Comentários

Quando true, essa propriedade permite que o contêiner tenha um tamanho virtual maior que seus limites visíveis.

Observação

Em Windows Forms quando um controle filho é ancorado à direita ou inferior (Control contém Right ou Bottom) o contêiner se comportará como se AutoScroll estivesse definido falsecomo .

Atualmente, há uma limitação no Windows Forms que impede que todas as classes derivadas agiam ScrollableControl corretamente quando ambas estiverem RightToLeft habilitadas e AutoScroll estiverem definidas como true. Por exemplo, digamos que você coloque um controle como Panel - ou uma classe de contêiner derivada de Panel (como FlowLayoutPanel ou TableLayoutPanel) - em seu formulário. Se você definir AutoScroll no contêiner true e definir a Anchor propriedade em um ou mais dos controles dentro do contêiner como Right, nenhuma barra de rolagem será exibida. A classe derivada de ScrollableControl atos como se AutoScroll fossem definidos como false. Atualmente, a única solução alternativa é aninhar o interior de ScrollableControl outro ScrollableControl. Por exemplo, se você precisar TableLayoutPanel trabalhar nessa situação, poderá colocá-la dentro de um Panel controle e definir AutoScroll como Panel true.

Observação

AutoScroll mantém a visibilidade das barras de rolagem automaticamente. Portanto, a configuração da HScroll propriedade ou VScroll como true não tem efeito quando AutoScroll está habilitada.

Aplica-se a

Confira também