Entwickler-Ecke

WinForms - kleines problem beim erstellen eines LOGIN´s


Haliax - So 09.02.14 18:45
Titel: kleines problem beim erstellen eines LOGIN´s
Hallo setze mich erst seit kurzem mit C# auseinander, hauptsächlich um mir möglichkeiten zu erarbeiten meine Arbeit zu erleichtern.

Ich hänge jetzt schon an dem login fest, habe nur einen kleinen Login erstellt d.h. ohne datenbankzugriff da nur ich dort zugriff haben werde.

Hier erstmal der Code:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
        private void button1_Click(object sender, EventArgs e)
        {
            string Benutzername = textBox1.Text;
            string BNvergleich = "admin";
            string Passwort = textBox2.Text;
            string PWvergleich = "passwort";

            if (Benutzername == BNvergleich)
                if (Passwort == PWvergleich)
               {
                    Admin adminok = new Admin();
                    adminok.Show();
                    this.Close();
                }
                else
            {
                textBox1.Clear();
                textBox2.Clear();
                MessageBox.Show("Das war wohl nichts, Bitte gebe deine Zugangsdaten erneut ein!");
            }
        }

Soweit funktioniert das ganze auch nur es gibt 1 problem.
Else wird in diesem Status nicht ausgeführt, warum?

Setze ich hinter else ein : ";"
dann wird es ausgeführt aber sofern dann auch die logindaten richtig sind wird auch bei "if" die messagebox ausgeführt.

Wo liegt jetzt der Fehler an meinem Code?

Danke schonmal.

mfg

Haliax ( Neuer lehrling im C# :) )

Moderiert von user profile iconTh69: Quote- durch C#-Tags ersetzt


Yankyy02 - So 09.02.14 19:08

Hallo Haliax,

Das Problem liegt bei deiner Klammerung. Zu welchem Block gehört wohl dein Else zum ersten oder zum zweiten?


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
private void button1_Click(object sender, EventArgs e)
        {
            string Benutzername = textBox1.Text;
            string BNvergleich = "admin";
            string Passwort = textBox2.Text;
            string PWvergleich = "passwort";

            if (Benutzername == BNvergleich)
            {
                if (Passwort == PWvergleich)
                {
                    Admin adminok = new Admin();
                    adminok.Show();
                    this.Close();
                }
            }
            else
            {
                textBox1.Clear();
                textBox2.Clear();
                MessageBox.Show("Das war wohl nichts, Bitte gebe deine Zugangsdaten erneut ein!");
            } 
        }


Du wirst aber auch deinen Vergleich auf Gültigkeit überdenken müssen denn wenn zwar der Benutzername richtig ist jedoch das Passwort falsch wird auch so der else Block nicht "angesprungen".

Würde dir sowas vorschlagen


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
private void button1_Click(object sender, EventArgs e)
        {
            string Benutzername = textBox1.Text;
            string BNvergleich = "admin";
            string Passwort = textBox2.Text;
            string PWvergleich = "passwort";

            if (Benutzername == BNvergleich & Passwort == PWvergleich)
            {

                    Admin adminok = new Admin();
                    adminok.Show();
                    this.Close();
            }
            else
            {
                textBox1.Clear();
                textBox2.Clear();
                MessageBox.Show("Das war wohl nichts, Bitte gebe deine Zugangsdaten erneut ein!");
            } 
        }


MfG

Gery


Haliax - So 09.02.14 19:37

Danke hat super geklappt, werde mich damit weiter auseinandersetzen.
Danke dir

mfg Haliax


Th69 - Mo 10.02.14 11:13

Noch als Nachtrag:
bei boolschen Vergleichen sollten besser die (bedingten) logischen Operatoren && und || verwendet werden, anstatt der Bitoperatoren & und |:

C#-Quelltext
1:
if (Benutzername == BNvergleich && Passwort == PWvergleich)                    

Der Vorteil darin liegt in der Kurzschlussauswertung [http://de.wikipedia.org/wiki/Kurzschlussauswertung], d.h. es werden nur die Vergleiche durchgeführt, die zum Gesamtergebnis auch nötig sind. Ein gutes Beispiel dazu gibt es unter Operator && (C#-Referenz) [http://msdn.microsoft.com/de-de/library/2a723cdk.aspx].


Haliax - Di 11.02.14 22:19

Danke, schon umgesetzt und klappt Prima.
Deine Links werde ich mir mal ausdrucken und die Infos auf der Fahrt zur Arbeit durcharbeiten.

mfg Haliax