tcn 1 Denunciar post Postado Outubro 27, 2009 Bom Dia Pessoal estou com uma pequena dúvida, tenho Form de Login em C# que preciso fecha-lo após login, porem Não estou conseguindo, como faz para fechar após abrir um novo form? estou usando esse código private void btn_logar_Click(object sender, EventArgs e) { string nome; string senha; int i; nome = "1"; senha = "1"; if (txt_nome.Text == " " && txt_senha.Text == " ") { MessageBox.Show("Erro! Login ou Senha Invalido", "Erro!!"); } nome = Convert.ToString(txt_nome.Text); senha = Convert.ToString(txt_senha.Text); if (txt_senha.Text != "adm12345" && txt_nome.Text != "Administrador") { MessageBox.Show("Erro! Login ou Senha Invalido", "Erro!!"); } else { this.Hide(); FrmLogin mainForm = new FrmLogin(); this.Close(); frmprincipal novoform = new frmprincipal(); novoform.Show(); } porem nao está abrindo o segundo form, Grato. Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Sousa 0 Denunciar post Postado Outubro 27, 2009 TCN, da uma lida ai: http://forum.imasters.com.br/index.php?/topic/354522-logar-no-sistema-sem-perder-a-sessao-do-usuario/page__p__1341755__fromsearch__1entry1341755 Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
tcn 1 Denunciar post Postado Outubro 27, 2009 Então meu caro, sou novato em C# e vou ser sincero, não entendi corretamente seu código deste tópico no caso você criou sua Acesso como Showdialog, eu não fiz isso, como proceder para que FrmLogins e torne um Showdialog? Grato pela Ajuda Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Sousa 0 Denunciar post Postado Outubro 27, 2009 Tcn, é o seguinte. Eu creio que você deva estar utilizando C# Windows Form e não WEB. Bem, nele você tem uma classe chamada Program.CS, dentro dela você irá colocar este codigo: static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Negocios.clsUsuario objUsuario = new Negocios.clsUsuario(); //Este é minha Entidade USUARIO, dentro dela tenho meus GETS e SETS frmLogin login = new frmLogin(objUsuario); // Abro o formulario login, onde irei ter o TXTUsuario e o TXTSenha + o botão logar if (login.ShowDialog() == DialogResult.OK) // Se o resultado que retornar do formulario for correto então login.ShowDialog() será DialogResult.OK { Application.Run(new frmPrincipal(objUsuario)); //Então você vai abrir sua pagina principal. } } } Veja como irá ficar a pagina frmLogin: private void cmdLogar_Click(object sender, EventArgs e) { VerificaUsuario(txtUsuario.Text, txtSenha.Text); } private void VerificaUsuario(string usuario, string senha) { int result; BLL.clsUsuario objBllUsuario = new BLL.clsUsuario(); objEntUsuario.Usuario = usuario; objEntUsuario.Senha = senha; result = objBllUsuario.VerificaUsuario(objEntUsuario);//Método que irá verificar no Banco se o Usuario e Senha Existem. if (result == 1)//Se o usuario e Senha estiverem OK ele irá entrar aqui. { this.DialogResult = DialogResult.OK; } else { if(result == 2) { MessageBox.Show("Usuario ou Senha inválido", "", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); } else if (result == 3) { this.DialogResult = DialogResult.Abort; } else { MessageBox.Show("Usuario ou Senha não foram preenchidos corretamente", "", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); } } } Espero que tenha entendido. Caso não souber o que é uma entidade, então vai um exemplo: public class clsUsuario { private string usuario; private string senha; public string Usuario { get { return usuario; } set { usuario = value; } } public string Senha { get { return senha; } set { senha = value; } } } Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
tcn 1 Denunciar post Postado Outubro 27, 2009 Só me tire um dúvida objEntUsuario <<< isso aqui ele acusa não esta sendo mencionando no código. BBL <<< não mencionada no código Como eu faço amigo neste caso? grato pela Ajuda, ajudou a entender bastante o código, Muito Obrigado Edditando: lendo, isso seria no caso apenas para conexão com banco de dados, no caso posso comentar essa parte e colocar Hard code mesmo não eh? Ah Sim, consegui funcionar fazer pegar assim o código private void btn_logar_Click(object sender, EventArgs e) { string nome; string senha; int i; //nome = "Administrador"; // senha = "adm12345"; if (txt_nome.Text == " " && txt_senha.Text == " ") { MessageBox.Show("Erro! Login ou Senha Invalido", "Erro!!"); } nome = Convert.ToString(txt_nome.Text); senha = Convert.ToString(txt_senha.Text); if (txt_senha.Text != "adm12345" && txt_nome.Text != "Administrador") { MessageBox.Show("Erro! Login ou Senha Invalido", "Erro!!"); } else { this.Hide(); FrmLogin mainForm = new FrmLogin(); this.Hide(); frmprincipal novoform = new frmprincipal(); novoform.Show(); } Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Sousa 0 Denunciar post Postado Outubro 27, 2009 Tcn, objEntUsurio seria a instancia do meu objeto. No código anterior eu falei dos Gets e Sets e dei um exemplo, crei a classe public class clsUsuario, esta classe até o momento não esta sendo utilizada. para eu utilizar eu faço o seguinte: clsUsuario nome que eu quiser, no exemplo foi objEntUsurio = new clsUsuario(); A partir desse ponto eu posso estar utilizando as propriedades e métodos deste objeto. ex: clsUsuario usuario = new clsUsuario(); txtUsuario.text = usuario.Usuario(); txtSenha.text = usuario.Senha(); O BLL é Bussiner Layer, ele é a camada que você faz suas validações e chama a camada DAO, a camada DAO faz comunicação com o banco de dados. Ou seja, aqui estamos vendo Orientação Objeto 3 camadas. Se estiver dificil e você não necessitar disso neste momento, sugiro que faça tudo no mesmo form, mas eu sugiro tb que aprenda Orientação a Objetos, pq é certo. Vou fazer um exemplo de como irá ficar seu código sem OOP(Programação Orientada a Objetos) e com OOP. Sem, na tela de login: private void cmdLogar_Click(object sender, EventArgs e) { if(VerificaUsuario(txtUsuario.Text, txtSenha.Text) == 1) { this.DialogResult = DialogResult.OK; } } private void VerificaUsuario(string Usuario, string Senha) { return VerificaBLL; } private int VerificaBLL(string Usuario, string Senha) { if(Usuario != string.empty && Senha != string.Empty) { int result; result = VerificaDAO(Usuario, Senha); } } private int VerificaDAO(String Usuario, String Senha) { //aqui é onde você irá se comunicar com o banco de dados. // Faça aqui sua string de conexão //Faça os parametros para fazer uma consulta SQL e retorna o resultado. //Vamos supor que você utilizou um SQLDataReader; SqlCommand commad = new SqlCommand("select ou procedure", string de conexao); command.CommandType = CommandType.Text //ou .StoredProcedure depende do q você usará, eu acho melhor você usar procedure. SqlDataReader dr = command.ExecuteReader();// Ele irá executar o comando que foi feito acima. if(dr.HasRows)//Verifica se retornou linhas do SQL executado. { return 1; } else { return 0; } } Com, na tela de Login: public class Login { private void cmdLogar_Click(object sender, EventArgs e) { if(VerificaUsuario(txtUsuario.Text, txtSenha.Text) == 1) { this.DialogResult = DialogResult.OK; } } private void VerificaUsuario(string Usuario, string Senha) { UsuarioBll usuarioBll = new UsuarioBll(); //Fiz a instancia da classe, ou seja, criei um objeto. return usuarioBll.VerificaBLL; } } public class UsuarioBll { public int VerificaBLL(string Usuario, string Senha) { if(Usuario != string.empty && Senha != string.Empty) { UsuarioDAO usuarioDAO = new UsuarioDAO(); int result; result = usuarioDAO.VerificaDAO(Usuario, Senha); } } } public class UsuarioDAO { public int VerificaDAO(String Usuario, String Senha) { //aqui é onde você irá se comunicar com o banco de dados. // Faça aqui sua string de conexão //Faça os parametros para fazer uma consulta SQL e retorna o resultado. //Vamos supor que você utilizou um SQLDataReader; SqlCommand commad = new SqlCommand("select ou procedure", string de conexao); command.CommandType = CommandType.Text //ou .StoredProcedure depende do q você usará, eu acho melhor você usar procedure. SqlDataReader dr = command.ExecuteReader();// Ele irá executar o comando que foi feito acima. if(dr.HasRows)//Verifica se retornou linhas do SQL executado. { return 1; } else { return 0; } } } Bom espero ter conseguido explicar melhor agora. Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
tcn 1 Denunciar post Postado Outubro 27, 2009 Entendi, Sim cara perfietamente, Obrigado Pela Ajuda Evandro Sousa, muito Obrigado pela ajuda, ajudou muito Abraços! Compartilhar este post Link para o post Compartilhar em outros sites