Problema windows forms
16/11/2008
0
criei um projeto vazio, dentro desse projeto coloquei um windows form e uma class library.
no projeto d windows forms criei mais 3 windows forms: um de login, outro principal e um modelo.
qndo faço o login era para o formulario de login fechar e o principal ficar aberto, mas n da certo de todas as formas q tentei ou fecha td ou n fecha nd.
se v6 puderem me dar uma força agradeço.
Brunoalisson
Posts
16/11/2008
Codename.v
Uma forma de se fazer seria a seguinte:
- Tela principal (A tela que é aberta quando o programa é executado):
private void FormPrincipal_Load(object sender, EventArgs e) { //Instancia um objeto do seu form de login. FormLogin frmLogin = new FormLogin(); //Exibe o form de login como dialogo e caso o seu resultado seja //um DialogResult.No a aplicação é finalizada. if(frmLogin.ShowDialog() == DialogResult.No) { this.Close(); } }
- Tela de Login:
Aqui você vai inserir a sua logica de verificação do login e caso o login for verdadeiro você vai retornar um DialoResult.Yes e no caso de ser falso você vai retornar um DialogResult.No...
Exemplo:
if(usuario.Equals("Dev") && senha.Equals("Media")) this.DialogResult = DialogResult.Yes; else this.DialogResult = DialogResult.No;
Espero ter ajudado. Abraços!
16/11/2008
Brunoalisson
namespace FomularioModelo { public partial class FormLogin : Form { public FormLogin() { InitializeComponent(); buttonLogin.Enabled = false; labelErro.Enabled = false; } private void textBoxSenha_Leave(object sender, EventArgs e) { if (TextBoxSenha.Text != "") { buttonLogin.Enabled = true; buttonLogin.Focus(); } } private void buttonLogin_Click(object sender, EventArgs e) { OdbcConnection conexao = new OdbcConnection("Dsn=PostgreSQL30;database=BancoDeDados;server=localhost;port=5432;uid=postgres;sslmode=disable;readonly=0;protocol=7.4-1;fakeoidindex=0;showoidcolumn=0;rowversioning=0;showsystemtables=0;fetch=100;socket=4096;unknownsizes=0;maxvarcharsize=255;maxlongvarcharsize=8190;debug=0;commlog=0;optimizer=1;ksqo=1;usedeclarefetch=0;textaslongvarchar=1;unknownsaslongvarchar=0;boolsaschar=1;parse=0;cancelasfreestmt=0;extrasystableprefixes=dd_;lfconversion=1;updatablecursors=1;disallowpremature=0;trueisminus1=0;bi=0;byteaaslongvarbinary=1;useserversideprepare=0;lowercaseidentifier=0;xaopt=1"); OdbcCommand sql = new OdbcCommand("Select * from \"Login\" where \"Login\" = \´" + TextBoxLogin.Text + "\´ and \"Senha\" = \´" + TextBoxSenha.Text + "\´;", conexao); OdbcDataReader dr = null; try { conexao.Open(); dr = sql.ExecuteReader(); if (dr.HasRows) { Form principal = new FormPrincipal(); principal.Show(); //aki eu tento fechar o formulario de login } else { labelErro.Text = "Login e/ou senha incorretos"; labelErro.Visible = true; } } finally { dr.Close(); conexao.Close(); } }
tentei faze da forma q vc falo mas ele instancia um formulario em branco
como eu faria para q a intancia tivesse a mesma interface do form original?
20/11/2008
Brunoalisson
eu consegui resolver da seguinte forma:
inicializo primeiro o form de login e se o login estiver correto instacio o formPrincipal e dou um Hide() no formLogin
para q o programa n continue em execução qndo o formPrincipal for fechado dou um Application.Exit(); e encerro a aplicação.
Clique aqui para fazer login e interagir na Comunidade :)