Windows Forms - Aplicando o AutoScroll

Hoje veremos como aplicar o AutoScrool aos controles TextBox, ListBox, ListView, TreeView e DataGridView em um projeto Windows Forms.

A rolagem automática até o final da caixa ou listagem de exibição é útil, por exemplo, em situações em que você usa um desses componentes como a janela de exibição de dados e deseja exibir o último elemento.

Geralmente, você adiciona os itens à caixa ou na exibição e deseja ter certeza de que o último item adicionado está visível sem a necessidade de fazer isso com o mouse.

Recursos usados:

Criando o projeto Blazor no VS Community 2019

Abra o VS 2019 Community (versão mínima 16.4.x) e selecione a opção Create a New Project;

A seguir selecione a opção Windows Forms App (.NET Framework) e clique em next;

Informe o nome do projeto :  <nome_projeto>, a localização e clique em Create;

No formulário Form1.cs inclua os seguintes controles:

  • ListBox
  • ListView
  • TreeView
  • DataGridView
  • TextBox
  • Button

Disponha os controles conforme o leiaute abaixo:

Em cada controle adicionamos dados usando a caixa de propriedades. Somente para o DataGridView é que fizemos isso via código usando a propriedade DataSource e usando um DataTable.

 

Abaixo temos o código do formulário onde aplicamos o AutoScroll a cada controle:

 

using System;
using System.Data;
using System.Windows.Forms;
namespace WF_AutoScroll
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            CriaDataTable();
        }
        private void CriaDataTable()
        {
            DataTable table = new DataTable();
            table.Columns.Add("Nome", typeof(string));
            table.Rows.Add("Acre");
            table.Rows.Add("Alagoas");
            table.Rows.Add("Amapá");
            table.Rows.Add("Bahia");
            table.Rows.Add("Espirito Santo");
            table.Rows.Add("Distrito Federal");
            table.Rows.Add("Goiás");
            table.Rows.Add("Paraná");
            table.Rows.Add("Pará");
            table.Rows.Add("São Paulo");
            table.Rows.Add("Rio de Janeiro");
            dataGridView1.DataSource = table;
        }
        private void btnExecuta_Click(object sender, EventArgs e)
        {
            ExecutaScroll();
        }
        private void ExecutaScroll()
        {
            //AutoScroll para TextBox
            textBox1.SelectionStart = textBox1.Text.Length;
            textBox1.ScrollToCaret();
            //AutoScroll para ListBox
            listBox1.SelectedIndex = listBox1.Items.Count - 1;
            listBox1.SelectedIndex = -1;
            //AutoScroll para ListView
            listView1.EnsureVisible(listView1.Items.Count - 1);
            //AutoScroll para TreeView
            treeView1.ExpandAll();
            treeView1.Nodes[treeView1.Nodes.Count - 1].EnsureVisible();
            //AutoScroll para DataGridview
            dataGridView1.FirstDisplayedCell =
                dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[0];
        }
    }
}


Executando o projeto iremos obter o resultado abaixo:


 

E estamos conversados...
 

"E este evangelho do reino será pregado em todo o mundo, em testemunho a todas as nações, e então virá o fim."
Mateus 24:14

 

Referências:


José Carlos Macoratti