Ajuda para criar tela de login
Olá, gente.
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.
2) Assim era pra fechar o form de login, mas a aplicação toda é fechada.
Alguém poderia me dar uma luz? Pois essa é a primeira aplicação com login que eu desenvolvo.
Grata.
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
Curtidas 0
Respostas
Jair Souza
22/01/2014
Olá, na realidade em nenhum dos dois você menciona o form do login...
tenta assim :
ou assim :
tenta assim :
FormPrincipal frm = new FormPrincipal();
this.Visible = false;
frm.Show();
ou assim :
FormPrincipal frm = new FormPrincipal();
this.Hide();
frm.Show();
GOSTEI 0
Rachel Andrade
22/01/2014
Oi, Jair. Obrigada pela atenção.
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.
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.
GOSTEI 0
Jair Souza
22/01/2014
Oi, no form principal coloque :
private void FormPrincipal_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
GOSTEI 0
Raniel Gomes
22/01/2014
Olha como eu fiz em um projetinho:
Código botão entrar tela de login:
Que acontece eu deixo a propriedade "Enabled" do formulário principal como "False" .
Qualquer dúvida pode postar aqui.
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.
GOSTEI 0
Raniel Gomes
22/01/2014
Esqueci de postar o resto do código rsrs, minha camada de Banco:
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();
}
}
}
GOSTEI 0
Rachel Andrade
22/01/2014
Oi, no form principal coloque :
Obrigada, Jair. Assim deu certo.
private void FormPrincipal_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
GOSTEI 0
Rachel Andrade
22/01/2014
Raniel, muito obrigada pelos exemplos, serão muito úteis aqui. Vou estudar e adaptar para o meu sistema.
GOSTEI 0
Joel Rodrigues
22/01/2014
Uma outra forma é você ter o form principal como primeiro da sua aplicação, assim, quando ele for fechado, a aplicação é encerrada.
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.
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.
GOSTEI 0
Joel Rodrigues
22/01/2014
Nesse formato, o FormPrincipal seria realmente o principal da aplicação (configurado lá no Program.cs) e o seu evento load seria mais ou menos assim:
E no FormLogin, no botão "Entrar", teria algo semelhante a isso:
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:
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;
GOSTEI 0
Raniel Gomes
22/01/2014
Raniel, muito obrigada pelos exemplos, serão muito úteis aqui. Vou estudar e adaptar para o meu sistema.
BLZ DISPONHA....
GOSTEI 0
Jair Souza
22/01/2014
Oi, no form principal coloque :
Obrigada, Jair. Assim deu certo.
private void FormPrincipal_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
Fico muito contente em ter ajudado.
GOSTEI 0
Rachel Andrade
22/01/2014
Obrigada, Joel Rodrigues. Testei aqui essa forma e também deu certo.
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.
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.
GOSTEI 0
Joel Rodrigues
22/01/2014
Fico feliz por ter contribuído de alguma forma.
Estou marcando o tópico como concluído.
Estou marcando o tópico como concluído.
GOSTEI 0