0

Ich habe diese Schaltfläche mit dem folgenden CodeMethodenname erwartet/keine Überlastung Spiele delegieren

newEnterPass pass = new newEnterPass(); 
private void truncateEmp_Click(object sender, EventArgs e) //TRUNCATE EMPLOYEES 
    { 
     if (pass.ShowDialog(this) == DialogResult.OK) 
     { 
      pass.proceed.Click += new EventHandler<newEnterPass>(pass.truncateEmp(sender,e)); 
     } 
    } 

Es gibt mir den Fehler Method name expected. Wenn ich den Code entfernen (sender, e) dann wird es mir geben einen anderen Fehler

No overload for 'truncateEmp' matches delegate System.EventHandler<cms.newEnterPass>'

Hier ist der Code von truncateEmp aus der Klasse newEnterPass

public void truncateEmp(object sender, EventArgs e) 
    { 
     string pass = passField.Text; 
     if (pass == "") 
     { 
      MessageBox.Show("Did you input something? I doubt it."); 
      return; 
     } 

     bool r = validate_login(pass); 
     if (r) 
     { 
      db_connection(); 

      MySqlCommand cmd = new MySqlCommand(); 
      cmd.CommandText = "TRUNCATE TABLE Employees"; 
      cmd.Connection = connect; 

      cmd.ExecuteNonQuery(); 
      MessageBox.Show("Success!", "TRUNCATE", MessageBoxButtons.OK, MessageBoxIcon.Information); 

      logs.LogThatShit_TruncateEmp(); 
      this.Close(); 
      passField.Clear(); 

      connect.Close(); 
     } 
     else 
     { 
      MessageBox.Show("Wrong password!", "TRUNCATE", MessageBoxButtons.OK, MessageBoxIcon.Error); 
      passField.Clear(); 
     } 
    } 

Kann jemand helfen? Danke euch allen!

+1

Sie können beim Konstruieren des Delegaten keine Parameter an die Methode übergeben. Versuchen Sie 'new EventHandler (pass.truncateEmp)' stattdessen. –

+0

Warum haben Sie den Klassennamen 'newEnterPass' als generischen Parameter für' EventHandler' angegeben? –

+0

Warum brauchst du ''? Erwähnen Sie einfach '+ = new EventHandler (pass.truncateEmp);' – praty

Antwort

0

Sie benötigen keine <newEnterPass>. Schreiben Sie Ihre Ereignisbehandlung erneut als

pass.proceed.Click += new EventHandler(pass.truncateEmp); 
+0

Sie sagen, dass Sie '' nicht benötigen, aber fahren Sie fort, es in Ihren "korrigierten" Code einzuschließen. Sie sollten Ihren Code entweder korrigieren, was Sie für richtig halten, oder genauer erklären, was Sie meinen. So wie es ist, glaube ich nicht, dass sogar das Entfernen es zum Funktionieren bringt ... – Chris

+0

Ups! Entschuldigung, mein fehler. Korrigiert den Code jetzt. – praty

+0

Es ist wahrscheinlich wert, die wichtigere Änderung explizit aufzurufen, die den Parameter in EventHandler in die Methodengruppe ändert, anstatt einen Aufruf der Methode wie zuvor. – Chris