Desenvolvimento - C#
Guia prático para o desenvolvimento de Aplicações C# em Camadas - parte 7
Este é o sétimo artigo da série onde vamos demonstrar passo-a-passo a construção de uma aplicação .Net utilizando o conceito de desenvolvimento em camadas.
por Carlos Camacho7 – User Interface – Formulário de Produtos
Neste artigo vamos criar o Formulário de Produtos do nosso projeto.
- Abra o Microsoft Visual Studio;
- Clique em File > Open > Project/Solution...
- Na janela Open Project, selecione o arquivo da nossa Solution (C:\Loja\Modelos\Loja.sln) e clique em Open para abrir a solução.
Vamos adicionar um formulário chamado ProdutosForm.cs.
- Clique com o botão direito no projeto UIWindows e escolha Add > Windows Form...
- Na janela “Add New Item” vamos informar os seguintes dados:
Template: Windows Form
Name: ProdutosForm
- Clique em Add para adicionar o formulário.
Será exibido o formulário ProdutosForm:
- Altere a propriedade Size para 448; 512
Como as interfaces são semelhantes, vamos copiar os objetos do formulário de clientes para o formulário de produtos.
- Abra o formulário ClientesForm no modo de design e digite <Ctrl> + <A> para selecionar todos os objetos;
- Digite <Ctrl> + <C> para copiar os objetos para a área de transferência;
- Abra o formulário ProdutosForm em modo de design e digite <Ctrl> + <V> para colar os objetos.
- No objeto emailLabel altere os valores das seguintes propriedades:
Name: precoLabel |
Text: Preço: |
- No objeto emailTextBox altere a propriedade Name para precoTextBox
- No objeto telefoneLabel altere os valores das seguintes propriedades:
Name: estoqueTextBox |
Text: Estoque: |
- No objeto telefoneTextBox altere a propriedade Name para estoqueTextBox
- No objeto clientesDataGridView altere a propriedade Name para produtosDataGridView
Neste momento, nosso formulário de produtos estará com esta aparência:
Aqui também vamos criar o método AtualizaGrid() para fazer a comunicação com a camada de regras de negócio com o objetivo de preencher o objeto DataGridView com a lista de produtos existentes.
Dentro do método ProdutosForm_Load() vamos fazer uma chamada para o método AtualizaGrid() e também posicionaremos o cursor no primeiro campo do formulário.
- Copie e cole o trecho de código para o code behind do formulário ProdutosForm:
/*
* File...: ProdutosForm.cs
* Author.: Carlos Camacho - www.camachojunior.com.br
* Content: Formulário de Produtos
* Subject: Guia prático para o desenvolvimento de Aplicações C# em Camadas
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Loja.BLL;
using Loja.DAL;
using Loja.Modelos;
namespace Loja.UIWindows
{
public partial class ProdutosForm : Form
{
public ProdutosForm()
{
InitializeComponent();
}
public void AtualizaGrid()
{
// Comunicação com a Camada BLL
ProdutosBLL obj = new ProdutosBLL();
produtosDataGridView.DataSource = obj.Listagem();
// Atualizando os objetos TextBox
codigoTextBox.Text = produtosDataGridView[0, produtosDataGridView.CurrentRow.Index].Value.ToString();
nomeTextBox.Text = produtosDataGridView[1, produtosDataGridView.CurrentRow.Index].Value.ToString();
precoTextBox.Text = produtosDataGridView[2, produtosDataGridView.CurrentRow.Index].Value.ToString();
estoqueTextBox.Text = produtosDataGridView[3, produtosDataGridView.CurrentRow.Index].Value.ToString();
}
private void ProdutosForm_Load(object sender, EventArgs e)
{
AtualizaGrid();
nomeTextBox.Focus();
}
}
}
Agora vamos codificar as funcionalidades dos botões do formulário de produtos.
- Dê um duplo clique no botão Limpar para codificarmos o evento click;
- Copie e cole o código abaixo:
codigoTextBox.Text = "";
nomeTextBox.Text = "";
precoTextBox.Text = "";
estoqueTextBox.Text = "";
- Dê um duplo clique no botão Incluir para codificarmos o evento click;
- Copie e cole o código abaixo:
try
{
ProdutoInformation produto = new ProdutoInformation();
produto.Nome = nomeTextBox.Text;
produto.Preco = Convert.ToDecimal(precoTextBox.Text);
produto.Estoque = Convert.ToInt32(estoqueTextBox.Text);
ProdutosBLL obj = new ProdutosBLL();
obj.Incluir(produto);
MessageBox.Show("O produto foi incluído com sucesso!");
codigoTextBox.Text = Convert.ToString(produto.Codigo);
}
catch (Exception ex)
{
MessageBox.Show("Erro: " + ex.Message);
}
AtualizaGrid();
- Dê um duplo clique no botão Alterar para codificarmos o evento click;
- Copie e cole o código abaixo:
if (codigoTextBox.Text == "")
{
MessageBox.Show("Um produto precisa ser selecionado para alteração.");
}
else
try
{
ProdutoInformation produto = new ProdutoInformation();
produto.Codigo = int.Parse(codigoTextBox.Text);
produto.Nome = nomeTextBox.Text;
produto.Preco = Convert.ToDecimal(precoTextBox.Text);
produto.Estoque = Convert.ToInt32(estoqueTextBox.Text);
ProdutosBLL obj = new ProdutosBLL();
obj.Alterar(produto);
MessageBox.Show("O produto foi atualizado com sucesso!");
}
catch (Exception ex)
{
MessageBox.Show("Erro: " + ex.Message);
}
AtualizaGrid();
- Dê um duplo clique no botão Excluir para codificarmos o evento click;
- Copie e cole o código abaixo:
if (codigoTextBox.Text.Length == 0)
{
MessageBox.Show("Um produto deve ser selecionado antes da exclusão.");
}
else
try
{
int codigo = Convert.ToInt32(codigoTextBox.Text);
ProdutosBLL obj = new ProdutosBLL();
obj.Excluir(codigo);
MessageBox.Show("O produto foi excluído com sucesso!");
AtualizaGrid();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
AtualizaGrid();
- Dê um duplo clique no botão Ler para codificarmos o evento click;
- Copie e cole o código abaixo:
AtualizaGrid();
- Clique sobre o dataGridView;
- Na janela de propriedades, clique no ícone que tem um relâmpago para exibir a lista de eventos;
- Dê um duplo clique no evento CellClick para inserirmos o código para esse evento:
- Dentro do evento CellClick, copie e cole o código abaixo:
// Atualizando os objetos TextBox
codigoTextBox.Text = produtosDataGridView[0, produtosDataGridView.CurrentRow.Index].Value.ToString();
nomeTextBox.Text = produtosDataGridView[1, produtosDataGridView.CurrentRow.Index].Value.ToString();
precoTextBox.Text = produtosDataGridView[2, produtosDataGridView.CurrentRow.Index].Value.ToString();
estoqueTextBox.Text = produtosDataGridView[3, produtosDataGridView.CurrentRow.Index].Value.ToString();
- O code behind completo do nosso ProdutosForm.cs ficou assim:
/*
* File...: ProdutosForm.cs
* Author.: Carlos Camacho - www.camachojunior.com.br
* Content: Formulário de Produtos
* Subject: Guia prático para o desenvolvimento de Aplicações C# em Camadas
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Loja.BLL;
using Loja.DAL;
using Loja.Modelos;
namespace Loja.UIWindows
{
public partial class ProdutosForm : Form
{
public ProdutosForm()
{
InitializeComponent();
}
public void AtualizaGrid()
{
// Comunicação com a Camada BLL
ProdutosBLL obj = new ProdutosBLL();
produtosDataGridView.DataSource = obj.Listagem();
// Atualizando os objetos TextBox
codigoTextBox.Text = produtosDataGridView[0, produtosDataGridView.CurrentRow.Index].Value.ToString();
nomeTextBox.Text = produtosDataGridView[1, produtosDataGridView.CurrentRow.Index].Value.ToString();
precoTextBox.Text = produtosDataGridView[2, produtosDataGridView.CurrentRow.Index].Value.ToString();
estoqueTextBox.Text = produtosDataGridView[3, produtosDataGridView.CurrentRow.Index].Value.ToString();
}
private void ProdutosForm_Load(object sender, EventArgs e)
{
AtualizaGrid();
nomeTextBox.Focus();
}
private void limparButton_Click(object sender, EventArgs e)
{
codigoTextBox.Text = "";
nomeTextBox.Text = "";
precoTextBox.Text = "";
estoqueTextBox.Text = "";
}
private void incluirButton_Click(object sender, EventArgs e)
{
try
{
ProdutoInformation produto = new ProdutoInformation();
produto.Nome = nomeTextBox.Text;
produto.Preco = Convert.ToDecimal(precoTextBox.Text);
produto.Estoque = Convert.ToInt32(estoqueTextBox.Text);
ProdutosBLL obj = new ProdutosBLL();
obj.Incluir(produto);
MessageBox.Show("O produto foi incluído com sucesso!");
codigoTextBox.Text = Convert.ToString(produto.Codigo);
}
catch (Exception ex)
{
MessageBox.Show("Erro: " + ex.Message);
}
AtualizaGrid();
}
private void alterarButton_Click(object sender, EventArgs e)
{
if (codigoTextBox.Text == "")
{
MessageBox.Show("Um produto precisa ser selecionado para alteração.");
}
else
try
{
ProdutoInformation produto = new ProdutoInformation();
produto.Codigo = int.Parse(codigoTextBox.Text);
produto.Nome = nomeTextBox.Text;
produto.Preco = Convert.ToDecimal(precoTextBox.Text);
produto.Estoque = Convert.ToInt32(estoqueTextBox.Text);
ProdutosBLL obj = new ProdutosBLL();
obj.Alterar(produto);
MessageBox.Show("O produto foi atualizado com sucesso!");
}
catch (Exception ex)
{
MessageBox.Show("Erro: " + ex.Message);
}
AtualizaGrid();
}
private void excluirButton_Click(object sender, EventArgs e)
{
if (codigoTextBox.Text.Length == 0)
{
MessageBox.Show("Um produto deve ser selecionado antes da exclusão.");
}
else
try
{
int codigo = Convert.ToInt32(codigoTextBox.Text);
ProdutosBLL obj = new ProdutosBLL();
obj.Excluir(codigo);
MessageBox.Show("O produto foi excluído com sucesso!");
AtualizaGrid();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void lerButton_Click(object sender, EventArgs e)
{
AtualizaGrid();
}
private void produtosDataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
{
// Atualizando os objetos TextBox
codigoTextBox.Text = produtosDataGridView[0, produtosDataGridView.CurrentRow.Index].Value.ToString();
nomeTextBox.Text = produtosDataGridView[1, produtosDataGridView.CurrentRow.Index].Value.ToString();
precoTextBox.Text = produtosDataGridView[2, produtosDataGridView.CurrentRow.Index].Value.ToString();
estoqueTextBox.Text = produtosDataGridView[3, produtosDataGridView.CurrentRow.Index].Value.ToString();
}
}
}
- Abra o formulário principal Form1 no modo de design e dê um duplo clique na opção produtos do menu para codificarmos a chamada para este formulário com o código abaixo:
ProdutosForm obj = new ProdutosForm();
obj.MdiParent = this;
obj.Show();
Acabamos de implementar o Formulário de Produtos do nosso projeto Loja .Net.
Execute o projeto e teste as funcionalidades que implementamos neste artigo.
No próximo artigo vamos implementar o formulário de Vendas.
Até o próximo artigo!