C# - Exibindo uma lista de Itens - Uma abordagem OOP - II
Na segunda parte deste artigo vamos definir a camada de interface para exibir os itens da lista de compra usando as classes definidas na camada de domínio vista na primeira parte. |
Abra o projeto ListaComprasUI e em seguir o formulário form1.cs criado neste projeto e a partir da ToolBox inclua os seguintes controles no formulário:
Os controles serão dispostos conforme o leiaute da figura abaixo:
No início da declaração do formulário defina a variável totalCompras que será usada para armazenar o valor total das compras:
double totalCompras = 0;
No evento Load do formulário inclua a chamada ao procedimento InicializaListaBox() que deverá preencher o controle ListBox do formulário:
private void Form1_Load(object sender, EventArgs e) { inicializaListBox(); } |
Crie o procimento inicializaListBox() conforme o código a seguir:
private void inicializaListBox() { lbDados.Items.Clear(); lbDados.Items.AddRange(new Alimento[] { new Banana(), new Tomate(), new Laranja() }); lbDados.Items.AddRange(new Alimento[] { new Leite(), new Queijo(), new Laranja() }); lbDados.Items.AddRange(new Alimento[] { new Ovo(), new Presunto(), new Salmao() }); lbDados.Items.AddRange(new Alimento[] { new Cenoura(), new Alface() }); lbDados.Items.AddRange(new Alimento[] { new Guarana(), new Agua()}); totalCompras = 0; } |
Aqui estamos criando instâncias das nossas classes para gerar os objetos que irão preencher o ListBox; Quando instanciamos um objeto Banana o construtor da classe base Alimento será usado para inicializar o objeto e assim sucessivamente.
No evento lbDados_SelectedIndexChanged do controle ListBox vamos limpar as mensagens de erro e chamar o procedimento ExibirItem para exibir os detalhes de um item selecionado:
private void lbDados_SelectedIndexChanged(object sender, EventArgs e) { erro1.Clear(); ExibirItem((Alimento) lbDados.Items[lbDados.SelectedIndex]); } |
Neste codigo estamos realizando um conversão do item selecionado para o tipo Alimento: (Alimento) lbDados.Items[lbDados.SelectedIndex]
Crie o procedimento ExibirItem() que deverá exibir os detalhes de um item selecionado no controle ListBox nas caixas de texto do formulário:
private void ExibirItem(Alimento _item) { txtCalorias.Text = _item.Calorias.ToString(); txtCustoTotal.Clear(); txtTipo.Text = _item.Tipo; txtUnidade.Text = _item.Unidade; txtPreco.Text = _item.Preco.ToString("C"); if (_item.Custo != 0) { txtCustoTotal.Text = _item.Custo.ToString("C"); } } |
No evento Click do botão LimparLista() inclua o código que chama os procedimentos LimpaDetalhes() que limpa os controles TextBox e inicalizaListBox() que preenche o ListBox:
private void btnLimparLista_Click(object sender, EventArgs e) { LimpaDetalhes(this); inicializaListBox(); } |
O código do procedimento LimpaDetalhes(this) é dado abaixo:
private void LimpaDetalhes(Control ctrl) { foreach (var c in ctrl.Controls) { if (c is TextBox) { ((TextBox)c).Text = String.Empty; } } } |
No evento CLick do botão Adicionar Item temos o código que obtém um objeto a partir de um item selecionado no ListBox e adiciona o item na lista de compras incrementando o valor das compras:
private void btnAdicionarItem_Click(object sender, EventArgs e) { erro1.Clear(); try { double quantidade = Convert.ToDouble(txtQuantidade.Text); Alimento item = (Alimento)lbDados.Items[lbDados.SelectedIndex]; item.SetCusto(quantidade); txtCustoTotal.Text = item.Custo.ToString("C"); txtQuantidade.Clear(); totalCompras += item.GetCustoCompra(quantidade); txtValorTotal.Text = totalCompras.ToString("C"); } catch (FormatException) { erro1.SetError(txtQuantidade, "Informe um valor"); txtQuantidade.Focus(); txtQuantidade.SelectAll(); } catch (ArgumentOutOfRangeException) { erro1.SetError(lbDados, "Selecione um item da lista"); } } |
O código abaixo no evento Click do botão Remover Item obtém o item selecionado no ListBox removendo da lista de compras e decrementando o seu valor do total das compras:
private void btnRemoverItem_Click(object sender, EventArgs e) { erro1.Clear(); try { Alimento item = (Alimento)lbDados.Items[lbDados.SelectedIndex]; totalCompras -= item.Custo; item.ResetarCusto(); txtCustoTotal.Clear(); txtQuantidade.Clear(); txtValorTotal.Clear(); if (totalCompras != 0) { txtValorTotal.Text = totalCompras.ToString("C"); } } catch (ArgumentOutOfRangeException) { erro1.SetError(lbDados, "Selecione um item da lista"); } } |
Abaixo vemos um exemplo de execução da aplicação:
Pegue o projeto completo aqui : ListaCompras.zip
Veja os
Destaques e novidades do SUPER DVD Visual Basic 2013
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Mat 6:1 Guardai-vos de fazer as vossas boas obras diante dos homens, para serdes vistos por eles; de outra sorte não tereis recompensa junto de vosso Pai, que está nos céus. (Jesus)
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#