Avatar billede the_fox Nybegynder
17. december 2005 - 15:51 Der er 10 kommentarer og
1 løsning

Login-form skal lukkes/termineres efter at login = ok

Hej Eksperter,

Jeg er ved at lave en login-form til en applikation. Når man login = ok skal der åbnes en ny form med selve "programmet".

Mit problem er at jeg ikke kan få lukket form1 (login-formen) når login = ok uden at form2 også lukker. Bruger man this.hide(); kører den stadig i baggrunden.

Er jeg helt ude i hampen eller har I nogle gode forslag?

Mvh Ole

Koden er herunder:

namespace WindowsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        } 

        private string login(string bruger, string pass)
        {
            OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Documents and Settings\\Ole.SKOVBAKKEN\\Dokumenter\\Visual Studio 2005\\Projects\\WindowsApplication2\\database\\database.mdb");
            con.Open();
            OleDbCommand cmd = new OleDbCommand("SELECT * FROM Brugere", con);
            OleDbDataReader rdr = cmd.ExecuteReader();

            while (rdr.Read())
            {
                if ((string)rdr[1] == bruger && (string)rdr[2] == pass)
                {
                    con.Close();
                    return "1";
                }
                else
                {
                    con.Close();
                    return "0";
                }
            }
            return "0";
        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            string res;
            res = login(textBox1.Text, textBox2.Text);

            if (res == "1")
            {
                Form2 form2 = new Form2();
                form2.ShowDialog();
            }
            else
            {
                MessageBox.Show("Forkert bruger eller adgangskode!");
            }
        }
    }
}
Avatar billede Syska Mester
17. december 2005 - 16:04 #1
Well, til at starte med hvis jeg smide username og password i din SQL statement og teste om den returene 1 row, for så findes bruger med det angivne password jo....

Det Andet ville jeg lave lidt om på.... start din mail form, og start login form oven på den, angiver han ikke korrrekt user og pass, så luk det hele ned....

// ouT
Avatar billede polle007 Nybegynder
17. december 2005 - 16:13 #2
Du kan også vælge at fange den i din Main

Application.Run(new LoginForm());
if(login == ok){
  Application.Run(new MainForm());
}
Avatar billede the_fox Nybegynder
17. december 2005 - 16:22 #3
buzzzz <- Nu har jeg startet loginformen oven på main. Men hvordan lukker jeg main hvis user+pass = false?

Mvh Ole
Avatar billede Syska Mester
19. december 2005 - 13:53 #4
Login formen skal vises som en Dialog, altså sådan at Main formen ikke kan tage focus så længe login formen er åben....

this.DialogResult = DialogResult.Ok; hvis login gik godt, og noget andet hvis det fejlede....
og så bare lave en close på din login dialog....

På din main form kan du så teste hvad DialogResult på din login form står til... hvis den står til DialogResult.Ok; så ved du jo at det hvis godt, hvis den står til alt andet, gik det ikke godt......

DialogResult result = loginform.ShowDialog();

if(result == DialogResult.Ok)
{
// han blev logget ind
}
eles
{
// forkert kode eller password
}

Sådan ville jeg lave det.....

// ouT
Avatar billede the_fox Nybegynder
20. december 2005 - 19:59 #5
Ok, nu virker skidtet... Men hvad gør jeg så hvis jeg vil have brugernummeret fra form1 med over i form2? (Jeg skal nok lige lave et nyt spørgsmål, så du kan få nogle flere points.)

Min main ser nu sådan ud:

static class Program
    {
        public static Form staticVar = null;
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
           
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
         
            Form2 loginform = new Form2();
            DialogResult result = loginform.ShowDialog();
            if (result == DialogResult.OK)
            {
                Application.Run(new Form1());           
            }
        }
    }

mvh Ole
Avatar billede Syska Mester
21. december 2005 - 03:15 #6
Application.Run(new Form1(username));

Så skal du bare lave om i constructoren på Form1, så den tager mod en string... der er mange muligheder....
Avatar billede the_fox Nybegynder
21. december 2005 - 09:31 #7
DOH!! Jeg har sgu da skrevet forkert! :(

Jeg skal have brugernummeret fra form2 (loginformen) med over i form1 (selve programmet).

Indtil videre mange tak for hjælpen!

Mvh Ole
Avatar billede the_fox Nybegynder
21. december 2005 - 09:38 #8
Du kan lige smide et svar her:

http://www.eksperten.dk/spm/673781
Avatar billede the_fox Nybegynder
22. december 2005 - 12:29 #9
Buzzzz? Kan du ikke smide et svar? Jeg laver lige et nyt spm. det er vist blevet lidt rodet det her!
Avatar billede Syska Mester
22. december 2005 - 13:41 #10
ups, troede jeg havde smidt et svar

// ouT
Avatar billede the_fox Nybegynder
25. december 2005 - 20:40 #11
Tak for hjælpen! Det er sgu klasse!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester