ScrollableControl.AutoScroll Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
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:
Crie um novo aplicativo Windows Forms.
Adicione um Panel ao formulário.
Adicione um TextBox ao painel e nomeie-o
text1
.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.
Adicione um Button ao formulário.
Adicione um manipulador para o
Click
evento do botão.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 true
e 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 false
como .
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.