Eu estou programando em C# (Csharp
) eu tenho uma tabela DataGridView
, onde nela eu tenho meus dados do SQL
, onde tem a lista dos meus clientes.
Eu queria, por exemplo : onde eu estiver selecionado, eu abrisse outra janela com os outros códigos deste cliente.
Não sei como e quais códigos, alguém pode me ajudar?
Eu uso sempre uma classe que significa uma lista de valores, e fico trabalhando com ela em memória!
Csharp (C#) Code:
Classe Base:
public class Cliente
{
public int Id { get; set; }
public string Nome { get; set; }
public string Endereco { get; set; }
}
Código Formulário 1:
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void BtnFechar_Click(object sender, EventArgs e)
{
Close();
}
public ICollection<Cliente> Clientes;
private void Form1_Load(object sender, EventArgs e)
{
Cliente c1 = new Cliente() { Id = 1, Nome = "Cliente 1", Endereco = "Rua 1" };
Cliente c2 = new Cliente() { Id = 2, Nome = "Cliente 2", Endereco = "Rua 2" };
Clientes = new List<Cliente>
{
c1, c2
};
dataGridView1.DataSource = Clientes;
dataGridView1.Update();
}
private void dataGridView1_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (e != null && e.RowIndex > -1)
{
Selecionar(e.RowIndex);
}
}
private void dataGridView1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e != null && e.KeyData == Keys.Enter)
{
int? rowIndex = dataGridView1.CurrentCell?.RowIndex;
if (rowIndex.HasValue)
{
Selecionar(rowIndex.Value);
}
}
}
private void Selecionar(int rowIndex)
{
if (rowIndex > -1)
{
int Id = (int)(dataGridView1.Rows[rowIndex].Cells[0].Value);
Cliente clienteEscolhido = Clientes.Where(c => c.Id == Id).FirstOrDefault();
if (clienteEscolhido != null)
{
Form2 frm = new Form2(clienteEscolhido);
frm.ShowDialog();
}
else
{
MessageBox.Show("Erro", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
}
Formulário 1:
Código Formulário 2:
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{
private Cliente Cliente;
public Form2(Cliente cliente)
{
InitializeComponent();
Cliente = cliente;
}
private void Form2_Load(object sender, EventArgs e)
{
if (Cliente != null)
{
TId.Text = $"{Cliente.Id}";
TNome.Text = Cliente.Nome;
TEndereco.Text = Cliente.Endereco;
}
}
private void BtnFechar_Click(object sender, EventArgs e)
{
Close();
}
}
}
Formulário 2:
Sendo que no formulário 1
possui toda as lista de clientes e no formulário 2
quando você der um double_click
no formulário 1
ou enter
na linha (cell) ele abre o formulário 2
com as informações adicionais.
Esse exemplo é uma das maneiras, como você não foi bem especifico e não adicionou nenhum código na sua pergunta acarreta muito de não sabemos o que está fazendo … !!!