Habilitar botão somente se houver alteração nos controles do formulário

2 respostas
G

Quero habilitar o botão de Salvar somente se os controles do formulário (ComboBox, TextBox e Checkbox) sofrerem qualquer tipo de alteração. Não quero que seja aberta conexões com o banco de forma desnecessária.

Pesquisando, encontrei no stackeroverflow um tópico que me chamou atenção. Have event fire whenever any changes made to textboxes, comboboxs, etc. inside form. É exatamente do que preciso.

Tentei usar o código que foi sugerido ao dono da pergunta, e entendi mais ou menos como funciona, mas não consegui implantar.

Alguma sugestão de como posso fazer isso?

2 Respostas

I

Boa tarde. Talvez seria melhor você fazer uma verificação no evento Click do botão Salvar. Possibilitando validações dos campos e a conexão se os mesmos estiverem preenchidos.

R

gabernardone,

Para habilitar o botão, TODOS os controles devem estar, digamos, “alterados/preenchidos”, ou deve ocorrer quando QUALQUER UM deles for alterado?

Se for qualquer um, crie um método e chame o método através do evento change de cada controle, lembrando que seu método será acionado SEMPRE, EM CADA CONTROLE. É isso mesmo?

Se TODOS os controles precisam estar preenchidos/alterados, então execute a sugestão do Isaque_Fernando.

Para implementar a solução do stackoverflow você teria que pesquisar sobre eventos para entender o funcionamento.

Com relação a abertura desnecessária do banco e como você não citou nada sobre a aplicação (se é desktop, web, etc. que possuem soluções específicas para cada plataforma).
Não é comum abrir/fechar a conexão a cada persistência. Geralmente (através do login) o usuário é validado, a conexão com o banco é realizada e a desconexão é feita no encerramento da aplicação. Mas como toda regra tem uma exceção…

Você deve procurar soluções que permitam guardar o status da conexão, de forma que você a possa “enxergar” nas diversas partes de seu aplicativo, mantendo essa (única) conexão sempre ativa.
Nesse caso, você não precisa abrir a conexão todas as vezes, basta verificar se a conexão ainda está aberta/ativa (se estiver fechada, abra) e execute a persistência.

Criado 18 de janeiro de 2016
Ultima resposta 19 de jan. de 2016
Respostas 2
Participantes 3