Desenvolvimento - C#

Cadastro de um Consultório em Windows Forms, com C# e SQL Server – Parte 4

Nesta 4ª parte vamos continuar com a codificação de nosso formulário base implementando os métodos que iremos usar na herança visual dos demais.

por Wellington Balbo de Camargo



Olá pessoal, continuamos nossa série de artigos criando aplicações simples em Windows Forms usando a linguagem C# e o banco de dados SQL Server.     

 Nesta parte vamos continuar com a codificação de nosso formulário base implementando os métodos que iremos usar na herança visual dos demais.

 Devemos ter a preocupação de, depois que o usuário gravar um registro por exemplo, os controles usados, como combobox, textbox e outros, sejam limpados automaticamente. Para isso devemos criar um método que limpa os campos após a gravação de um registro qualquer.

 Abra o frmBase.cs e crie um novo método do tipo private com o nome LimpaControles que não irá nos retornar nada, como mostra a imagem abaixo:

LimpaControles().JPG

 Acima fiz um laço do tipo foreach na classe nativa Control (pertencente ao namespace Windows.Forms) com o objetivo de ser feita uma “varredura” em meu formulário, percorrendo todos os controles existentes dentro do meu form. A primeira verificação, por exemplo, foi pra saber se existe um textbox em meu form e, se existir, ele será limpado. E assim faço com os demais. Lembrando que em alguns controles, como Label e Button, não tem necessidade de serem limpos. Conforme você for precisando adicionar ou substituir um controle por outro é só adicionar o tipo dele em nosso foreach.

 Se precisarmos fazer o mesmo a um controle do tipo CheckedListBox, devemos fazer outro foreach, como mostrou nosso último if da imagem acima.

 Continuando com nosso conceito de trabalhar com Herança, iremos criar os métodos Salvar, Excluir e Localizar apenas neste formulário base, e iremos fazer a chamada desses métodos nos demais formulários, poupando assim o retrabalho de ter que digitar o mesmo método diversas vezes. Iremos começar criando o método Salvar.

frmBaseMethods.JPG

 Acima criei o método do tipo booleano passando como retorno o valor false, ele só me retornará true quando o registro for salvo no banco. Faço o mesmo com os métodos Excluir e Localizar.

 Agora vá ao modo design do formulário base e dê dois cliques nos botões Salvar e Excluir. Dentro deles insira o seguinte código:

frmButtonsSave&Delete.JPG

 O que fiz foi chamar os métodos referentes aos respectivos botões e dependendo da resposta do método entro no meu if ou no meu else. Em minhas verificações coloquei o método LimpaControles, pois ele irá entrar verificar se o registro foi gravado, por exemplo, se foi ele limpa os controles e exibe a mensagem ao usuário, ou que o registro foi gravado ou que deu erro, isso dependendo do que acontecer em nosso sistema.      

 Uma característica que será implementada é a de que quando forem abertos os formulários sempre virão registros vazios, ou seja, se desejar um registro específico, o usuário terá que localizar o mesmo por meio do respectivo botão. Depois de salvo um registro, por exemplo, eles são automaticamente limpados.

 Vamos agora implementar o enum que criamos no artigo anterior, em nosso botão Salvar. Se o usuário salvou o registro ou excluiu, devemos configurar nosso enum para Navegando, como mostra a imagem a seguir:

TheEnumUseInSaveMethod.JPG

 Devemos também dentro desses métodos fazer a chamada a outro que iremos criar para que os controles sejam habilitados ou desabilitados.

 Agora vamos criar os métodos para os botões Novo e Localizar que são iguais com os dos botões Salvar e Excluir, como você pode perceber na imagem:

frmButtonsNew&Search.JPG

 Lembrando que após criarmos nosso método que habilita/desabilita os controles do form devemos implementá-lo aos botões Novo e Localizar.

 Vamos criar um método que será implementado nos formulários que herdarão de meu formulário base, que será o CarregaValores, a função dele será a de retornar os dados parametrizados do banco e carregar meus controles, vou dizer que, por exemplo, o campo txtNome irá vir carregado com a coluna de nomes do meu banco e assim por diante. Faça a chamada a este método no botão Localizar.

 Crie um novo método do tipo public virtual como os anteriores só que ele será do tipo void, ou seja, não terá retorno algum. Crie também o método para habilitar / desabilitar os controles no form, como a imagem abaixo nos mostra:

HabilitaDesabilitaControlesMethod1.JPG

 O que fiz foi um foreach, que percorre todos os meus controles, parecido com os do método LimpaControles.  Só que aqui ele faz um if pra verificar se o controle é um Toolstrip, se for ele continua, se não for, ele habilita nossa variável bValue que foi passada como parâmetro em nosso método.

 Agora dentro deste mesmo método, faço as verificações em meus botões para habilitá-los ou desabilitá-los.

HabilitaDesabilitaControlesMethod2.JPG

 Acima fiz o seguinte: passei o status de cada botão, por exemplo, no primeiro botão, o Novo, atribui à ele que o status será o Navegando e assim fiz com os demais. No fim atribui que o botão Fechar sempre estará habilitado. Assim, dependendo da ação do usuário o botão específico estará habilitado ou desabilitado (com exceção do Fechar que terá valor fixo).

 Agora é só aplicar os métodos aos respectivos botões passando os valores, true ou false, dependendo de cada situação. Por exemplo, no botão novo, passo meu método com o valor true, porque quero habilitar os controles para que o usuário insira um novo registro, já no botão excluir, passo o valor false ao meu método porque já exclui, não preciso mais que os controles sejam habilitados e assim sucessivamente. Abaixo um exemplo do botão Localizar:

SearchButtonMethod.JPG

 Finalizando, vá ao modo Design de nosso form e dê dois cliques no form para ir ao evento Load do mesmo. Nele, insira os seguintes códigos:

frmBase_Load.JPG

 Fazendo isso, toda vez que o form for carregado ele iniciará com o status Navegando, com os controles limpos e com o método HabilitaDesabilitaControles como false. Assim inicializamos os métodos em nosso form de uma forma prática e sem erros, permitindo ao usuário praticidade e performance na hora de navegar nos formulários.

 Para quem se interessar, estou disponibilizando para download o que fizemos até esta parte do artigo em nosso sistema. Para baixar, clique aqui.

Na próxima parte de nosso artigo, iremos criar nosso formulário base de Pesquisa, com controles específicos para que possamos realizar a pesquisa no banco de dados.

Confira no próximo artigo!

Créditos à Luciano Pimenta, que fez as videoaulas e ao Portal Linha de Código, por onde pude baixá-las, estudá-las e posteriormente fazer este artigo.

 Quaisquer dúvidas, estou à disposição.

 Até o próximo artigo!

Wellington Balbo de Camargo

Wellington Balbo de Camargo - Desenvolvedor Web/Desktop em .NET, com pouco mais de 1 ano de experiência na área. Cursando o 4º Semestre de Análise de Sistemas, atualmente estuda para melhorar os conhecimentos em SQL Server e ASP.NET, buscando em um futuro próximo as certificações Microsoft nessas áreas. Mantém um blog com dicas e artigos para iniciantes em .NET no endereço http://programandodotnet.wordpress.com e nas horas vagas procura ajudar e aprender com o pessoal do Fórum daMSDN. Atualmente é editor de artigos da Linha de Código.