Inquiridor
Definição de campos obrigatórios não estão funcionando! - C#

Pergunta
-
Olá galera.. bem é o seguinte! criei um método que me informa na hora que eu disparo o evento click do botão gravar, qual campo é obrigatorio!! desse jeito
public void CamposObrig() /// DEFINE NO ATO DE APERTAR "GRAVAR" QUAIS CAMPOS SÃO OBRIGATORIOS
{
if (TXT_Codigo.Text == string.Empty)
{
MessageBox.Show("Campo (Código Cidade) deve ser preenchido", "TechSIS Informação", MessageBoxButtons.OK, MessageBoxIcon.Warning);
TXT_Codigo.Select();
return;
}
if (TXT_Descrição.Text == string.Empty)
{
MessageBox.Show("Campo (Descrição) deve ser preenchido", "TechSIS Informação", MessageBoxButtons.OK, MessageBoxIcon.Warning);
TXT_Descrição.Select();
return;
}Beleza.. MAIS NÃO TA FUNCIONANDO kkkkkk
O que ta acontecendo? bom, até que a mensagem de warning aparece... porem, o focus não vai para o textbox que eu informei.. a aplicação simplismente continua rodando (O sistema não espera eu informar um valor no textbox antes de continuar)
E o mais estranho, é que se eu pegar esses comandos, e colocar no evento Click do botão GRAVAR, ai funciona!
Mais se eu criar esse metodo, e informar CamposObrig() no evento Click do botão GRAVAR não funciona!
Não sei o que é isso
Obrigado pela atenção!
- Editado Thiago_Wenemy sábado, 11 de fevereiro de 2012 23:30
Todas as Respostas
-
Thiago,
Tenta colocar Focus() ao invés de Select():
TXT_Codigo.Focus();
[]s,
Carlos dos Santos
blog: www.carloscds.net
twitter: @cdssoftware -
Carlos.. Erro continua!
if (TXT_Codigo.Text == string.Empty)
{
MessageBox.Show("Campo (Código Cidade) deve ser preenchido", "TechSIS Informação", MessageBoxButtons.OK, MessageBoxIcon.Warning);
TXT_Codigo.Focus();
return;
}- Editado Thiago_Wenemy sábado, 11 de fevereiro de 2012 23:17
-
Thiago eu faria uma modificação na sua lógica, faria o seguinte caso algum controle preciesse ser preenchido este método irá retornar um booleano com valor FALSE,
no método que o chama, você somente irá passar para a próxima linha caso este método verificador retorne um TRUE
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Twitter @Olavooneto
Se for útil marque como resposta e faça um Developer feliz :)- Sugerido como Resposta RafaChoks segunda-feira, 13 de fevereiro de 2012 12:05
-
Bom dia amigo
Como nosso amigo Olavo disse vc precisa retornar um valor boolean false para que a validação funcione, do contrário estará sendo tudo como true e não vai funcionar.
Um abraço!
Rafael Soares Desenvolvedor Web (Java,.NET) Desenvolvedor Mobile(Windows Phone 7, Android)
-
Não deu certo
public bool CamposObrig() /// DEFINE NO ATO DE APERTAR "GRAVAR" QUAIS CAMPOS SÃO OBRIGATORIOS
{
if (TXT_Codigo.Text == string.Empty)
{
MessageBox.Show("Campo (Código Cidade) deve ser preenchido", "TechSIS Informação", MessageBoxButtons.OK, MessageBoxIcon.Warning);
TXT_Codigo.Focus();
return true;
}é isso mesmo? kkk
-
Amigo, boa noite.
Pelo jeito não deve ser páginas e sim um formulário Windows que está usando.Seguindo seu raciocinio, imagine um formulário com dois TextBoxes, txtNome e txtSobrenome.
É claro que há diversas possíveis lógicas de verificação para verificar se campos obrigatórios foram preenchidos e também se o conteúdo está no formato desejado. Um possível método de verificação seria:
/// <summary> /// Confirma se os campos obrigatorios foram preenchidos corretamente. /// Retorna True caso estejam todos preenchidos. /// </summary> private bool isCamposObrigatoriosPreenchidos() { // CAMPO NOME string strNome = txtNome.Text.Trim(); // O método Trim() remove espaços em branco if (strNome.Equals(string.IsNullOrEmpty)) { MessageBox.Show("O campo Nome é obrigatório!"); txtNome.Focus(); // define o foco do cursor return false; // retorna false - que no caso, houve um erro! } // CAMPO NOME string strSobrenome = txtSobrenome.Text.Trim(); // O método Trim() remove espaços em branco if (strSobrenome.Equals(string.IsNullOrEmpty)) { MessageBox.Show("O campo Sobrenome é obrigatório!"); txtSobrenome.Focus(); // define o foco do cursor return false; // retorna false - que no caso, houve um erro! } return true; // Caso nao haja erros, retorna TRUE (ok) }
Veja que eu utilizei o string.isNullOrEmpty para avaliar se a String é nula ou está vazia.
Mas você também pode usar strNome.equals("") que funciona.Já vi muitos programadores usarem:
if (txtNome.Text.Trim().Length < 1) return false;
No exemplo acima, usamos a propriedade Length que contem a quantidade de elementos na array que compoe a String.
Se o conteúdo da String for "maria", veja que contem 5 elementos (caracteres).
Caso sua aplicações/desenvolvimento esteja voltado para Web, aconselho ver a documentação do MSDN em português sobre RequiredFieldValidator:
http://msdn.microsoft.com/pt-br/library/system.web.ui.webcontrols.requiredfieldvalidator.aspx
Também:
http://support.microsoft.com/kb/313044/pt-br<//a>Lembre-se que além de verificar se os campos estão preenchidos, possívelmente você deverá verificar a integridade dos dados, definindo uma máscara padrão.
Exemplos de informações que utilizadam máscaras são telefones, CEP, e-mail, CEP.
Espero ter ajudado!.NET/Java/ etc - O importante é atingir o resultado, não me interessa a tecnologia!
-
Terra.. fiz dessa maneira, porem o return continua sendo ignorado!
string strCodigo = TXT_Codigo.Text; if (strCodigo == string.Empty) { MessageBox.Show("O campo Nome é obrigatório!"); TXT_Codigo.Focus(); // define o foco do cursor return false; // retorna false - que no caso, houve um erro! } // CAMPO NOME string strSobrenome = TXT_Descrição.Text; // O método Trim() remove espaços em branco if (strSobrenome == string.Empty) { MessageBox.Show("O campo Sobrenome é obrigatório!"); TXT_Descrição.Focus(); // define o foco do cursor return false; // retorna false - que no caso, houve um erro! } return true; // Caso nao haja erros, retorna TRUE (ok) }
A única coisa que mudei foi ser mais um pouco mais direto! se a propriedade .text = empty! return nela! :D- Editado Thiago_Wenemy terça-feira, 14 de fevereiro de 2012 10:46
-
Thiago, você está fazendo assim:
/*chama o método que irá verificar se todos os campos obrigátorios foram preenchidos * se SIM, entra no IF e continua o processamento * se NÃO, não entra no IF e termina o método*/ if (isCamposObrigatoriosPreenchidos()) { //Só irá entrar aqui se o valor retornado pela função for TRUE }
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Twitter @Olavooneto
Se for útil marque como resposta e faça um Developer feliz :) -
galera.. consegui fiz o seguinte
private bool CamposObrig() { bool CampoVazio = false; if (String.IsNullOrEmpty(TXT_Codigo.Text)) { MessageBox.Show("Campo (Código) deve ser preenchido", "TechSIS Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning); TXT_Codigo.Select(); CampoVazio = true; } if (String.IsNullOrEmpty(TXT_Descrição.Text)) { MessageBox.Show("Campo (Descrição) deve ser preenchido", "TechSIS Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning); TXT_Descrição.Select(); CampoVazio = true; } if (String.IsNullOrEmpty(TXT_UfSig.Text)) { TXT_UfSig.Select(); MessageBox.Show("Campo (UF) deve ser preenchido", "TechSIS Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning); CampoVazio = true; } return CampoVazio; }
Ai.. no click do botão.. coloquei isso
bool CamposObrigPreenchidos = CamposObrig(); if (!CamposObrigPreenchidos) { } else { return; }
PS: créditos ao Paulo Cesar em
- Editado Thiago_Wenemy terça-feira, 14 de fevereiro de 2012 13:19
-
Thiago, se você considera que alguma resposta lhe ajudou a achar a solução, por favor marque como resposta.
obrigado.
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Twitter @Olavooneto
Se for útil marque como resposta e faça um Developer feliz :) -
Fala Thiago, beleza?
Abaixo da chamada deste método está ocorrendo outras atividades?
O que quero dizer com isso: Você tem o método do seu botão, exemplo: btnGravar_Click e o mesmo chama o método CamposObrig (independente se seja um void ou não retorne nada). Após o método CamposObrig executar, existem outras rotinas abaixo?Se sim, só o fato de colocar return no método CamposObrig não irá adiantar, visto que somente irá sair do processamento do método atual e após, voltar ao evento do Botão e executar o restante.
public
bool CamposObrig() /// DEFINE NO ATO DE APERTAR "GRAVAR" QUAIS CAMPOS SÃO OBRIGATORIOS{
var ret = false;
foreach (var ctl in Controls)
{
if (ctl is TextBox)
{
if ((ctl as TextBox).Text == string.Empty)
{
//*** O AcessibleName ou AcessibleDescription conterão as informações relativas ao campo que estou percorrendo. ***\\
errorProvider1.SetError((ctl
as TextBox), "Campo (" + (ctl as TextBox).AccessibleName + ") deve ser preenchido");
(ctl
as TextBox).Focus();
}
else
{
errorProvider1.SetError((ctl
as TextBox), "");
ret =
true;
}
}
}
return ret;
}
private void btnGravar_Click(object sender, EventArgs e)
{
if (CamposObrig() == true)
{
MessageBox.Show("O Código será executado sem problemas");
}
else
{
MessageBox.Show("O Código NÃO SERÁ EXECUTADO");
return;
}
}
Controlar com True ou false seria interessante.
Agora, aproveitando, eu particularmente procuro utilizar MessageBox somente para perguntas e confirmações. Fora isso, porque não trabalhar com o Componente Error Provider???
Para ter idéia do que estou falando, segue uma idéia feita com base no que entendi da sua questão:
Resumindo, ao sair do método CamposObrig(), você continuará a executar o fluxo dentro do evento Click do botão. Espero ter ajudado.Cristiano Joaquim
- Sugerido como Resposta Cristiano Joaquim terça-feira, 14 de fevereiro de 2012 15:51