Fórum Ajuda para criar tela de login #467663
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
Curtir tópico
+ 0Posts
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();
Gostei + 0
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.
Gostei + 0
23/01/2014
Jair Souza
private void FormPrincipal_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
Gostei + 0
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.
Gostei + 0
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();
}
}
}
Gostei + 0
23/01/2014
Rachel Andrade
private void FormPrincipal_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
Gostei + 0
23/01/2014
Rachel Andrade
Gostei + 0
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.
Gostei + 0
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;
Gostei + 0
23/01/2014
Raniel Gomes
BLZ DISPONHA....
Gostei + 0
23/01/2014
Jair Souza
private void FormPrincipal_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
Fico muito contente em ter ajudado.
Gostei + 0
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.
Gostei + 0
23/01/2014
Joel Rodrigues
Estou marcando o tópico como concluído.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)