Ajuda para criar tela de login
22/01/2014
0
Estou criando uma aplicação que terá uma tela de login assim que for aberta. Se o usuário fizer login corretamente, então abre o form principal.
Porém, estou com dificuldade para abrir o form principal e fechar o de login.
Testei de duas formas (esse código é executado se o login for feito corretamente):
1) Assim o form principal abre, mas o de login fica por trás, muito chato.
FormPrincipal frm = new FormPrincipal(); frm.Show();
2) Assim era pra fechar o form de login, mas a aplicação toda é fechada.
FormPrincipal frm = new FormPrincipal(); frm.Show(); Close();
Alguém poderia me dar uma luz? Pois essa é a primeira aplicação com login que eu desenvolvo.
Grata.
Rachel Andrade
Posts
22/01/2014
Jair Souza
tenta assim :
FormPrincipal frm = new FormPrincipal(); this.Visible = false; frm.Show();
ou assim :
FormPrincipal frm = new FormPrincipal(); this.Hide(); frm.Show();
22/01/2014
Rachel Andrade
O form de login, no caso, é onde fica esse código. Por exemplo, o Close do segundo exemplo é do próprio form de login.
Testei aqui os exemplos e o form de login ficou oculto realmente, é assim que eu quero. Só que observei que quando fecho o form principal, a aplicação não é encerrada, ela fica rodando. Sabe dizer por que?
Grata.
23/01/2014
Jair Souza
private void FormPrincipal_FormClosed(object sender, FormClosedEventArgs e) { Application.Exit(); }
23/01/2014
Raniel Gomes
Código botão entrar tela de login:
Que acontece eu deixo a propriedade "Enabled" do formulário principal como "False" .
private void btnEntrar_Click(object sender, EventArgs e) { try { //Se for verdadeiro cria uma nova Instância da tela de login clsLogin login = new clsLogin(); //Cria uma nova instância da tela principal frmPrincipal p = new frmPrincipal(); login.Usuario = txtUsuario.Text; login.Senha = txtSenha.Text; clsBanco.login(login, p); p.Label(txtUsuario.Text); if (p.Enabled == true) { //Muda a propriedade do Form(Principal) para enabled Visible = false; } } catch (Exception erro) { MessageBox.Show("Erro de conexão com banco de dados" + erro.Message, "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Question); } }
Qualquer dúvida pode postar aqui.
23/01/2014
Raniel Gomes
public static void login (clsLogin log, frmPrincipal principal) { using(MySqlConnection conexaoMySQL = clsBanco.getInstancia().getConexao()) { try { string mSQL = "SELECT count(*) FROM FUNCIONARIOS WHERE USUARIO=@usuario AND SENHA=@senha"; MySqlCommand cmd = new MySqlCommand(mSQL, conexaoMySQL); cmd.Parameters.AddWithValue("@usuario",log.Usuario); cmd.Parameters.AddWithValue("@senha", log.Senha); conexaoMySQL.Open(); int i = Convert.ToInt16(cmd.ExecuteScalar()); if (i > 0) { principal.Enabled = true; principal.Show(); } else { MessageBox.Show("Usuario/Senha estão inválidos.", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Question); } } catch (FbException ex) { throw ex; } finally { conexaoMySQL.Close(); } } }
23/01/2014
Rachel Andrade
private void FormPrincipal_FormClosed(object sender, FormClosedEventArgs e) { Application.Exit(); }
23/01/2014
Rachel Andrade
23/01/2014
Joel Rodrigues
Ao abrir o form principal, você exibe a tela de login, que tratará as credenciais e, se o login for feito, essa tela é fechada, dando vez à tela principal.
23/01/2014
Joel Rodrigues
private void FormPrincipal_Load(object sender, EventArgs e) { this.Hide(); using(FormLogin frm = new FormLogin()) { if(frm.ShowDialog() == DialogResult.OK) { this.Show(); } else { this.Close(); } } }
E no FormLogin, no botão "Entrar", teria algo semelhante a isso:
if(LOGIN FEITO) { this.DialogResult = DialogResult.OK; } else { MessageBox.Show("Dados incorretos."); }
E em um botão "Cancelar", no form de login, bastaria definir o DialogResult como Cancel, que ele voltaria para o FormPrincipal e este seria fechado:
this.DialogResult = DialogResult.Cancel;
23/01/2014
Raniel Gomes
BLZ DISPONHA....
23/01/2014
Jair Souza
private void FormPrincipal_FormClosed(object sender, FormClosedEventArgs e) { Application.Exit(); }
Fico muito contente em ter ajudado.
23/01/2014
Rachel Andrade
São muitas formas de fazer uma mesma coisa, isso é muito bom, pois nos dá a liberdade de avaliar, escolher e decidir qual é a que mais se adequa às nossas necessidades.
Obrigada a todos. Por favor, podem finalizar esse tópico.
23/01/2014
Joel Rodrigues
Estou marcando o tópico como concluído.
Clique aqui para fazer login e interagir na Comunidade :)