ScrollableControl.AutoScroll Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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:
Crie um novo aplicativo do Windows Forms.
Adicione um Panel ao formulário.
Adicione um a TextBox ao painel e nomeie-o
text1.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.
Adicione um Button ao formulário.
Adicione um handler para o
Clickevento do botão.Adicione o seguinte código de exemplo e chame-o a partir do handler do
Clickbotã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.