Neste artigo vamos continuar o nosso exemplo anterior, criando a camada de apresentação e implementando suas funcionalidades. Na última parte desta série, criamos a camada de negócios; agora já podemos iniciar a criação da camada de apresentação (UI).
Neste exemplo vou criar uma aplicação Windows Forms para consumir o repositório criado, realizando as operações de manutenção e consulta de empregados e departamentos.
Selecione o menu FILE e clique em Add -> New Project. Depois escolha a linguagem C# e o template Windows Forms Applicaton; informe o nome WF e clique no botão OK.
Vamos abrir o formulário form1.cs e alterar o sua propriedade Text para ‘Manutenção de Dados’ e sua cor de fundo para Azul. A seguir, vamos incluir os controles abaixo no formulário a partir da ToolBox:
- 1 Controle TabControl com 3 TabPages: departamentos, funcionários e consultas:
- Na TabPage Departamentos vamos incluir os seguintes controles:
- 1 DataGridView – dgvDepartamentos
- 3 Labels
- 2 TextBox – txtCodigoDepartamento e txtNomeDepartamento
- 6 Button – btnLocalizarDepartamento, btnIncluirDepartamento, btnExcluirDepartamento, tnAlterarDepartamento, btnLimparDepartamento e bnCarregarDepartamentos
- Na TabPage Funcionarios vamos incluir os seguintes controles:
- 1 DataGridView – dgvFuncionario
- 6 Labels
- 4 TextBox – txtCodigoFunci, txtNomeFunci, txtSobreNome, txtEmail
- 1 Combobox – cboDepartamentoFunci
- 6 Button – btnLocalizarFunci, btnIncluirFunci, btnExcluirFunci, btnAlterarFunci, btnLimparFunci e btnCarregarFuncis
- Na TabPage Consultas vamos incluir os seguintes controles:
- 1 Combobox – cboDepartamentos
- 1 Button – btnProcessar
- 1 DataGridView – dgvFunciDepartamento
Antes de prosseguir, vamos incluir referências aos projetos BLL e Model no projeto WF.
Selecione o projeto WF e no menu PROJECT clique em Add Reference. A seguir, clique na guia Solution e marque as opções BLL e Model e clique no botão OK.
Dessa forma, já temos os controles dispostos no formulário e as referências aos demais projetos definidas. Vamos iniciar, então, com o código para manutenção de departamentos que irá realizar consultas e as operações CRUD usando a entidade Departamento.
Vamos começar definindo os namespaces usados no formulário:
using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using BLL; using Model;
A seguir, logo após à declaração da classe do formulário, vamos declarar duas variáveis que referenciam as classes DepartamentoBLL e EmpregadoBLL, onde estão os métodos que iremos acessar.
DepartamentoBLL departamentoBLL; EmpregadoBLL empregadoBLL;
Agora vamos implementar o código de referente a cada uma das funcionalidades, usando os eventos dos controles do formulário.
No evento Load do formulário, nós vamos definir o código que carrega os controles Combobox com as informações dos departamentos na guia Funcionarios e Consultas:
private void Form1_Load(object sender, EventArgs e)
{
try
{
departamentoBLL = new DepartamentoBLL();
List<Departamento> dep = departamentoBLL.Get_DepartamentoInfo();
cboDepartamentoFunci.DataSource = dep.ToList();
cboDepartamentoFunci.ValueMember = "DepartamentoId";
cboDepartamentoFunci.DisplayMember = "Nome";
cboDepartamentos.DataSource = dep.ToList();
cboDepartamentos.ValueMember = "DepartamentoId";
cboDepartamentos.DisplayMember = "Nome";
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Implementação das funcionalidades referente à guia Departamentos
No evento Click, do botão carregar da guia Departamentos, vamos definir o código que irá carregar os departamentos cadastrados, exibindo-os no controle DataGridView – dgvDepartamentos:
private void bnCarregarDepartamentos_Click(object sender, EventArgs e)
{
departamentoBLL = new DepartamentoBLL();
List<Departamento> dep = departamentoBLL.Get_DepartamentoInfo();
dgvDepartamentos.DataSource = dep.ToList();
formataGridViewDepart();
}
No evento Click, do botão Localizar, temos o código que irá localizar o departamento pelo código, exibindo o nome da caixa de texto txtDepartamento:
private void btnLocalizarDepartamento_Click(object sender, EventArgs e)
{
departamentoBLL = new DepartamentoBLL();
int codigo = Convert.ToInt32(txtCodigoDepartamento.Text);
List<Departamento> dep = departamentoBLL.Get_DepartamentoInfo(codigo);
txtNomeDepartamento.Text = dep[0].Nome;
}
No evento Click, do botão Incluir, temos o código que inclui um departamento:
private void btnIncluirDepartamento_Click(object sender, EventArgs e)
{
try
{
Departamento dep = new Departamento();
departamentoBLL = new DepartamentoBLL();
dep.Nome = txtNomeDepartamento.Text;
departamentoBLL.AdicionarDepartamento(dep);
MessageBox.Show("Departamento incluído com sucesso !", "Novo", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
No evento Click, do botão Excluir, temos o código que exclui um departamento:
private void btnExcluirDepartamento_Click(object sender, EventArgs e)
{
try
{
Departamento dep = new Departamento();
departamentoBLL = new DepartamentoBLL();
int codigo = Convert.ToInt32(txtCodigoDepartamento.Text);
dep = departamentoBLL.Localizar(codigo);
departamentoBLL.ExcluirDepartamento(dep);
MessageBox.Show("Departamento excluído com sucesso !", "Excluir", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
No evento Click, do botão Alterar, temos o código que alterar um departamento:
private void btnAlterarDepartamento_Click(object sender, EventArgs e)
{
try
{
Departamento dep = new Departamento();
departamentoBLL = new DepartamentoBLL();
int codigo = Convert.ToInt32(txtCodigoDepartamento.Text);
dep = departamentoBLL.Localizar(codigo);
dep.Nome = txtNomeDepartamento.Text;
departamentoBLL.AlterarDepartamento(dep);
MessageBox.Show("Departamento alterado com sucesso !", "Alterar", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
No evento Click, do botão Limpar, temos a chamada à rotina LimparTextBox(), que limpa os controles TextBox do formulário:
private void btnLimpar_Click(object sender, EventArgs e)
{
LimparTextBox(this);
}
public void LimparTextBox(Control control)
{
foreach (Control c in control.Controls)
{
if (c is TextBox)
{
((TextBox)c).Clear();
}
if (c.HasChildren)
{
LimparTextBox(c);
}
}
}
A formatação do datagridview para departamentos é feita pelo método formataGridViewDepart():
private void formataGridViewDepart()
{
var gdvDepart = dgvDepartamentos;
gdvDepart.AutoGenerateColumns = false;
gdvDepart.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders;
gdvDepart.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single;
//altera a cor das linhas alternadas no grid
gdvDepart.RowsDefaultCellStyle.BackColor = System.Drawing.Color.White;
gdvDepart.AlternatingRowsDefaultCellStyle.BackColor = System.Drawing.Color.Aquamarine;
//altera o nome das colunas
gdvDepart.Columns[0].HeaderText = "Cód.";
gdvDepart.Columns[1].HeaderText = "Nome";
//
gdvDepart.Columns[0].Width = 50;
gdvDepart.Columns[1].Width = 150;
//esconde a coluna
gdvDepart.Columns[2].Visible = false;
//seleciona a linha inteira
gdvDepart.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
//não permite seleção de multiplas linhas
gdvDepart.MultiSelect = false;
// exibe nulos formatados
gdvDepart.DefaultCellStyle.NullValue = " - ";
//permite que o texto maior que célula não seja truncado
gdvDepart.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
}
No evento CellClick, do datagridview dgvDepartamentos, temos o código que obtém os valores da linha selecionada e os exibe nas caixas de texto do formulário:
private void dgvDepartamentos_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (dgvDepartamentos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null)
{
txtCodigoDepartamento.Text = dgvDepartamentos.Rows[e.RowIndex].Cells[0].Value.ToString();
txtNomeDepartamento.Text = dgvDepartamentos.Rows[e.RowIndex].Cells[1].Value.ToString();
}
}
Dessa forma, já iniciamos a implementação das funcionalidades para a manutenção de departamentos.
Na próxima parte do artigo vamos definir a implementação para a manutenção de funcionários e consultas e concluir o nosso sistema.










