Nom de la méthode attendu c #

J’ai un gestionnaire d’événement, j’aimerais transmettre certains parameters à l’événement.

comme ceci, cette ligne déclenche une erreur: nom de la méthode attendu

p.Click += new System.EventHandler(P_Click(sender, new MyEventArgs { design = reader1["desig_prd"].ToSsortingng(), prix = (float)reader1["prix_prd"] })); 

mon événement P_Click

 public void P_Click(Object sender, EventArgs e) { var args = (MyEventArgs)e; ssortingng deignation = args.design; MessageBox.Show(deignation); } 

et j’ai classe MyEventArgs comme ça

 class MyEventArgs : EventArgs { public ssortingng design { get; set; } public float prix { get; set; } } 

De l’aide? Merci d’avance

Vous ne pouvez pas transmettre d’arguments à votre méthode lorsque vous vous abonnez à un gestionnaire d’événements. Vous devez simplement spécifier le nom de la méthode:

 p.Click += new EventHandler(P_Click); 

Ou notation courte:

 p.Click += P_Click; 

Si vous voulez déclencher ceci manuellement et passer des arguments, vous devriez appeler votre méthode avec ces arguments:

 P_Click(this, new MyEventArgs { design = reader1["desig_prd"].ToSsortingng(), prix = (float)reader1["prix_prd"] }); 

Mais c’est généralement une mauvaise pratique (déclencher manuellement les méthodes du gestionnaire d’événements). Utilisez PerformClick méthode PerformClick après avoir abonné votre gestionnaire d’événements et bien sûr créé une autre méthode pour vos arguments et appelez cette méthode depuis P_Click :

 p.PerformClick(); 

Changez-le en ceci

  p.Click += new System.EventHandler(P_Click); 

Utilisez un lambda pour fermer les données que vous souhaitez utiliser dans votre gestionnaire d’événements:

 p.Click += (s, args) => P_Click(reader1["desig_prd"].ToSsortingng(), (float)reader1["prix_prd"]); 

Vous avez mal compris comment les événements fonctionnent.

p.Click est l’événement.

P_Click est le gestionnaire d’événements.

Vous n’envoyez pas l’expéditeur et l’argument d’événement – parce que l’événement le fait. Donc, pour accrocher l’événement, tout ce dont vous avez besoin est p.Click += new System.EventHandler(P_Click); ou événement simplement p.Click += P_Click;

Vous n’avez pas besoin de MyEventArgs (du moins pas dans ce cas), mais calculez simplement ces valeurs dans l’événement hadler lui-même:

 public void P_Click(Object sender, EventArgs e) { var design = reader1["desig_prd"].ToSsortingng(); var prix = (float)reader1["prix_prd"]; ... }