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.