Array
(
)

Problema windows forms

Brunoalisson
   - 16 nov 2008

pessoal to começando em c# e to com um problema

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.


Codename.v
   - 16 nov 2008

Amigo... Seria muito bom que você nos apresentasse as meneiras como tentou implementar essa tela de login.

Uma forma de se fazer seria a seguinte:

- Tela principal (A tela que é aberta quando o programa é executado):

#Código


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:

#Código

if(usuario.Equals("Dev") && senha.Equals("Media"))
this.DialogResult = DialogResult.Yes;
else
this.DialogResult = DialogResult.No;


Espero ter ajudado. Abraços!


Brunoalisson
   - 16 nov 2008

fiz dessa forma:

#Código


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?


Brunoalisson
   - 20 nov 2008

problema resolvido! :D

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.