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

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:

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.

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:

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:

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:

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:

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.

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:

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:

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.

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!

21 comentários em “Cadastro de um Consultório em Windows Forms, com C# e SQL Server – Parte 4

  1. Wellington,
    Tudo bom?
    Primeiro parabéns pelo tuto. Estou aprendendo muito com você…
    Tenho uma duvida!!
    O método CarregaValores será criado somente assim??

    public virtual void CarregaValores()
    {

    }

    Antecipadamente muito obrigado

    Curtir

  2. pessoal aonde eu insiro este código?

    private void LimpaControles();
    {
    foreach (Control ctr in this.Controls)
    {
    if(ctr is TextBox)
    (ctr as TextBox).Text = “”;

    if(ctr is ComboBox)
    (ctr as ComboBox).SelectedIndex = -1;

    if(ctr is ListBox)
    (ctr as ListBox).SelectedIndex = -1;

    if(ctr is RadioButton)
    (ctr as RadioButton).Checked = false;

    if(ctr is CheckBox)
    (ctr as CheckBox).Checked = false;

    if(ctr is CheckedListBox)

    {
    foreach (ListControl item in (ctr as CheckedListBox).Items)
    item.SelectedIndex = -1;
    }
    }

    Curtir

  3. cara valew pelo site mto bom

    uma duvida no codigo do botão localizar esta escrito o metodo
    CarregaValores(); mas onde que foi descrito este metodo?

    Curtir

  4. Obrigada, Wellington. Acabei respondendo o post como anônimo, na pressa. Ehehehehe!

    Excelente o seu blog, muito instrutivo.

    To adorando. 🙂

    Abraços!

    Curtir

  5. Cara, eu deveria estar muito cego ou muito chapado pra não ter visto isso.
    QUE BURRO, DA ZERO PRA MIM 😀

    Brigadão Wellington e Camila

    Curtir

  6. ola bom dia!!
    estou com dúvida sobre esse tuto.! onde é que esta sendo declarado o método CarregaValore(); ???

    Curtir

  7. Gustavo, lá na tela do frmBase, você tem que dar F7, onde está o código da janela frmBase e inserir um enumerator chamado StatusCadastro e após, criar uma variável do tipo StatusCadastro, como escrito abaixo:

    public enum StatusCadastro
    {
    scInserindo, scNavegando, scEditando
    }

    public StatusCadastro sStatus;

    Estáaqui o link do código que tem na aula anterior: https://programandodotnet.files.wordpress.com/2010/02/enumstatuscadastro.jpg

    Curtir

  8. Boa tarde Wellington,
    estou acompanhando esse tutorial quue você está fazendo e estou achando muito interessante, pois ele já da uma base para outros programas que tenho em mente.
    Só que estou com dúvida em uma coisa, a variável sStatus, ela foi criada onde, pois olhei nas aulas anteriores e não vi nada relacionada a ela. Gostaria de saber pois estou parado aqui com esse problema. Desde já obrigado e continue o ótimo trabalho.

    Curtir

Expresse sua opinião!

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s