Windows Forms: Nach 3 Versuche Benutzername und Passwort fehlgeschlagen. Code eingeben und wieder gelöscht?

1 Antwort

Du wirst wahrscheinlich den Einlogg-Versuch über ein Event wie zB einen Button auslösen. Schreib einen Zähler, der jedesmal erhöht wird und nach 3 mal aktualisierst du die GUI.

Textboxen kannst du über die Visible-Eigenschaft verstecken.

int wrongPasswords = 0;

if(textbox_password.Text != passwort)
{
wrongPasswords++;
if(wrongPasswords>3)
{
textbox_password.Visible = false;

textbox_code.Visible = true; //muss davor auf false gesetzt sein
}
}

Mit einem anderen Event überprüfst du dann, ob 0815 eingegeben wurde, und setzt dann die Visible-Properties wieder zurück.

patri74 
Fragesteller
 13.02.2020, 19:55

Vielen Dank für Ihren Antwort. Leider hat nicht richtig geklappt.

namespace Projektarbeit_Pförtneranlage

{

   public partial class FormLogin : Form

   {

       public FormLogin()

       {

           InitializeComponent();

       }

       //Verbindungszeichenfolge

       string cs = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\patri\Downloads\LoginApplicationSourceCode\LoginApplicationSourceCode\LoginApplication\LoginApplication\MyDatabase.mdf;Integrated Security=True;Connect Timeout=30;";

       private void button2_Click(object sender, EventArgs e)

       {

           string username = txt_name.Text;

           string password = txt_pwd.Text;

           int wrongpassword = 0;

           if (txt_pwd.Text != password)

           {

               wrongpassword++;

               if (wrongpassword > 3)

               {

                   txt_pwd.Visible = false;

                   txt_code.Visible = true;

               }

           }

           try

           {

               //Erstellen Sie SqlConnection

               SqlConnection con = new SqlConnection(cs);

               SqlCommand cmd = new SqlCommand("Select * from tbl_Login where UserName=@username and Password=@password", con);

               cmd.Parameters.AddWithValue("@username", txt_name.Text);

               cmd.Parameters.AddWithValue("@password", txt_pwd.Text);

               con.Open();

               SqlDataAdapter adapt = new SqlDataAdapter(cmd);

               DataSet ds = new DataSet();

               adapt.Fill(ds);

               con.Close();

               int count = ds.Tables[0].Rows.Count;

               //Wenn count gleich 1 ist, wird die Form frmMain angezeigt

               if (count == 1)

               {

                   MessageBox.Show("Anmeldung erfolgreich!");

                   this.Hide();

                   FormGUI fm = new FormGUI();

                   fm.Show();

               }

               else

               {

                   MessageBox.Show("Login Failed!");

               }

           }

           catch (Exception ex)

           {

               MessageBox.Show(ex.Message);

           }

       }

0
guschteusz  13.02.2020, 20:01
@patri74

Hey,
bist du dir sicher, dass string passwort der Inhalt aus der Textbox sein soll? Normal speichert man Passwörter ja in der Datenbank und vergleicht dann das aus der Textbox mit dem Eintrag in der Db
So kann das im   if (txt_pwd.Text != password) nur übersprungen werden

0
patri74 
Fragesteller
 13.02.2020, 20:20
@guschteusz

Hey, das Probleme ist: zählt nicht bis 3 und kann keine code eingeben. Kannst du mir ein Programm programmieren?

0
guschteusz  13.02.2020, 20:27
@patri74

Ja, er kann nicht bis 3 zählen, weil der Zähler im if erhöht wird, welches nie ausgeführt wird, weil die Condition immer true sein wird so wie es jetzt ist
Ich fürchte nicht, dass ich das alles für dich machen kann, ich hab morgen eine Prüfung, hab deine Datenbank nicht, etc...
Ich nehme an, du musst zuerst das Passwort aus der Datenbank bekommen, mit dem du dann vergleichst

0