Usuário com melhor resposta
Problemas ao limpar textbox (form: login) / Ajuda.

Pergunta
-
Bom dia amigos,
Estou criando um método de validação de login, utilizando um formulário e duas classes, segue abaixo detalhamento;
// Formulário Login #region bt_entrar private void bt_entrar_Click(object sender, EventArgs e) { UsuarioBD usuariobd = new UsuarioBD(); usuariobd.AcessoUsuario(txt_usuario.Text, txt_senha.Text); } #endregion // Classe UsuarioBD #region AcessoUsuario public void AcessoUsuario(string usuario, string senha) { try { FLogin l = new FLogin(); //Conecta através da classe de conexão MySqlConnection conn = ConexaoBD.obterConexao(); string sql = "select * from usuario where usuario='" + usuario + "' and senha='" + senha + "'"; MySqlCommand cmd = new MySqlCommand(sql, conn); MySqlDataReader dr = cmd.ExecuteReader(); //Se estiver correto usuario/senha retorna como true if (dr.Read() == true) { l.Acessar(true); } else { l.Acessar(false); } } catch (MySqlException e) { MessageBox.Show(e.Message); } } #endregion // Formulário Login (retorno) #region Acessar public void Acessar(bool acesso) { if (acesso == true) { FPrincipal p = new FPrincipal(); p.ShowDialog(); } else if (acesso == false) { // QUANDO FALSE ELE EXIBE A MENSAGEM, PORÉM NÃO LIMPA OS TEXTBOX's (???) txt_usuario.Text = ""; txt_senha.Text = ""; MessageBox.Show("Usuário e/ou senha incorreto(s).", "Aviso do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } #endregion
Minha grande dúvida é, qual motivo ele não está limpando os textbox's? Já quebrei cabeça pra entender, até porque ele exibe o messagebox corretamente, mas não limpa os textbox.
Já tentei das seguintes formas:
txt_usuario.Text = ""; txt_senha.Text = ""; txt_usuario.Text = string.Empty; txt_senha.Text = string.Empty; txt_usuario.Text = string.IsNullOrEmpty; txt_senha.Text = string.IsNullOrEmpty
Obrigado à todos desde já!
OBS: Gostaria de saber de vocês programadores mais experientes, se essa forma de validação de login está muito ruim e se está seguindo uma boa lógica e boa pratica de programação?
Bom dia!
- Movido welington jrModerator sexta-feira, 27 de julho de 2018 12:23 forum mais especifico
Respostas
-
por causa do try/catch, tinha me esquecido
coloca um return false dentro dele
catch (MySqlException e) { MessageBox.Show(e.Message); return false; }
- Editado welington jrModerator sexta-feira, 27 de julho de 2018 13:29
- Marcado como Resposta developer.training sexta-feira, 27 de julho de 2018 13:36
Todas as Respostas
-
olá,
tenta desativar o viewstate do textbox
https://www.c-sharpcorner.com/UploadFile/ee01e6/viewstate-for-textbox-in-Asp-Net/?
-
-
você postou no forum de asp.net.
o que está confundindo ai, está limpando o textbox da nova janela que, não deu um show, você só instanciou, e não da original. dentro do login você chama outra janela de login, mas essa janela não é exibida, e está achando que está na primeira janela.
-
Welington,
Como deveria fazer essa chamada ?
Pelo que eu estava interpretando, eu estando no formulário e chamar algo em uma classe, ele iria manter a formulário principal visto que estou buscando informações de uma classe. Teria uma outra forma de fazer essa chamada ? Outra dúvida, porque exibe o messagebox?
Att,
-
public bool AcessoUsuario(string usuario, string senha) { try { //FLogin l = new FLogin(); //Conecta através da classe de conexão MySqlConnection conn = ConexaoBD.obterConexao(); string sql = "select * from usuario where usuario='" + usuario + "' and senha='" + senha + "'"; MySqlCommand cmd = new MySqlCommand(sql, conn); MySqlDataReader dr = cmd.ExecuteReader(); //Se estiver correto usuario/senha retorna como true if (dr.Read() == true) { return true; } else { return false; } } catch (MySqlException e) { MessageBox.Show(e.Message); } } private void bt_entrar_Click(object sender, EventArgs e) { UsuarioBD usuariobd = new UsuarioBD(); if(usuariobd.AcessoUsuario(txt_usuario.Text, txt_senha.Text)) { FPrincipal p = new FPrincipal(); p.ShowDialog(); } else { txt_usuario.Text = ""; txt_senha.Text = ""; MessageBox.Show("Usuário e/ou senha incorreto(s).", "Aviso do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } }
tente assim,
A o messagebox é exibido porque você chama ele normalmente, ele está dentro da instância do formulário. so que esse formulário você não deu o show nele
você estava limpando os campos de outro formulario, e não desse que foi preenchido os dados- Editado welington jrModerator sexta-feira, 27 de julho de 2018 12:53
-
public bool AcessoUsuario(string usuario, string senha) { try { //FLogin l = new FLogin(); //Conecta através da classe de conexão MySqlConnection conn = ConexaoBD.obterConexao(); string sql = "select * from usuario where usuario='" + usuario + "' and senha='" + senha + "'"; MySqlCommand cmd = new MySqlCommand(sql, conn); MySqlDataReader dr = cmd.ExecuteReader(); //Se estiver correto usuario/senha retorna como true if (dr.Read() == true) { return true; } else { return false; } } catch (MySqlException e) { MessageBox.Show(e.Message); } } private void bt_entrar_Click(object sender, EventArgs e) { UsuarioBD usuariobd = new UsuarioBD(); if(usuariobd.AcessoUsuario(txt_usuario.Text, txt_senha.Text)) { FPrincipal p = new FPrincipal(); p.ShowDialog(); } else { txt_usuario.Text = ""; txt_senha.Text = ""; MessageBox.Show("Usuário e/ou senha incorreto(s).", "Aviso do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } }
tente assim,
A o messagebox é exibido porque você chama ele normalmente, ele está dentro da instância do formulário. so que esse formulário você não deu o show nele
Welington,
Veja a mensagem ao tentar implementar;
-
-
-
-
-
por causa do try/catch, tinha me esquecido
coloca um return false dentro dele
catch (MySqlException e) { MessageBox.Show(e.Message); return false; }
- Editado welington jrModerator sexta-feira, 27 de julho de 2018 13:29
- Marcado como Resposta developer.training sexta-feira, 27 de julho de 2018 13:36
-