Apesar do avanço de tecnologias mais modernas, como aplicações web e frameworks multiplataforma, o Windows Forms ainda possui grande relevância no desenvolvimento de sistemas corporativos, principalmente em ambientes internos (intranets), onde a rapidez no desenvolvimento e a integração com o Windows são diferenciais importantes. Um dos componentes mais utilizados nessa tecnologia é o DataGridView, que permite a exibição e manipulação de dados em forma de tabela de forma eficiente e interativa. Sua versatilidade o torna ideal para a criação de interfaces ricas e funcionais, como consultas, edições em massa e visualização de grandes volumes de dados.
Em determinadas situações, é necessário executar uma ação quando o usuário clica em uma célula do DataGridView
. Para esse tipo de tratamento, uma das abordagens mais comuns é utilizar o evento CellMouseDown
.
Neste artigo, veremos um exemplo simples de como utilizar esse evento para exibir o conteúdo da célula clicada.
Exemplo Prático
Vamos utilizar um formulário básico, criado apenas para demonstração. Código fonte https://github.com/dancorrea86/FormularioExemplo.
Estrutura do Formulário
using System.Collections.Generic;
using System.Windows.Forms;
namespace ExemploFormulario
{
public partial class FormExemplo : Form
{
public FormExemplo()
{
InitializeComponent();
}
private void FormExemplo_Load(object sender, System.EventArgs e)
{
List<Exemplo> dados = new List<Exemplo>
{
dados.Add(new Exemplo { Id = 1, Nome = "Alice", Idade = 30 });
dados.Add(new Exemplo { Id = 2, Nome = "Bruno", Idade = 25 });
dados.Add(new Exemplo { Id = 3, Nome = "Carla", Idade = 28 });
};
dtvExemplo.DataSource = dados;
}
}
public class Exemplo
{
public int Id { get; set; }
public string Nome { get; set; }
public int Idade { get; set; }
}
}
Neste trecho, definimos uma classe Exemplo
que representa os dados exibidos na grade. Na carga do formulário (FormExemplo_Load
), instanciamos uma lista de objetos e a atribuimos como DataSource
do DataGridView
.
Tratando o Evento CellMouseDown
Agora, vamos adicionar o tratamento do clique com o botão esquerdo do mouse nas células do DataGridView
.
Registro do Evento
No construtor do formulário ou via designer, registramos o evento:
this.dtvExemplo.CellMouseDown += this.DtvExemplo_CellMouseDown;
Implementação do Handler
private void DtvExemplo_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.RowIndex < 0 || e.ColumnIndex < 0)
{
// Ignora cliques no cabeçalho ou fora das células
return;
}
if (e.Button == MouseButtons.Left)
{
var valorCelula = dtvExemplo[e.ColumnIndex, e.RowIndex].Value;
MessageBox.Show(valorCelula?.ToString(), "Conteúdo da Célula", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
Pontos Importantes
Validação de índices
if (e.RowIndex < 0 || e.ColumnIndex < 0)
{
return;
}
Antes de acessar os dados, é importante verificar se o clique ocorreu dentro dos limites válidos da grade.
Verificação do botão do mouse
if (e.Button == MouseButtons.Left)
{
// Ação desejada
}
Podemos tratar apenas cliques com o botão esquerdo, direito ou ambos, conforme a necessidade. No exemplo, focamos no botão esquerdo.
Conclusão
O evento CellMouseDown
é útil para capturar interações do usuário com células específicas do DataGridView
, sendo ideal para contextos onde é necessário realizar ações baseadas no conteúdo ou posição da célula clicada. Com os cuidados demonstrados neste exemplo, é possível aplicar esse recurso de forma segura e eficaz. Essa é uma demonstração básica e existem outros pontos para adicionar como por exemplo o trataamento de erros. Qualquer dúvida estou à disposição nos comentários. O projeto de exemplo está no repositório.
Comentários
Postar um comentário