2017-09-29 5 views
0

J'ai essayé d'utiliser event d'un userControl à un formulaire, mais lorsque je le crée dans un constructeur de formulaire, j'ai un problème. Je ne sais pas où est un échec. Il y a mon code.Champ System.MulticastDelegate._invocationCount n'est pas disponible C#

UserControl

public GameField() 
    { 
     InitializeComponent(); 
     button.Click += Button_Clicked; 
    } 

public event EventHandler ButtonClicked; 
private void Button_Clicked(object sender, EventArgs e) 
    { 
     if (this.ButtonClicked != null) this.ButtonClicked(sender, e); 
    } 

Formulaire

GameField gameField = new GameField(); //Instance of the derived class UserControl  

    public Form1() 
    {    
     InitializeComponent(); 
     gameField.ButtonClicked += new EventHandler(this.btn_Click); 
    } 

    private void btn_Click(object sender, EventArgs e) 
    { 
     throw new NotImplementedException(); 
    } 

Il y a un problème enter image description here

+0

ce qui se passe lorsque le bouton dans le contrôle de l'utilisateur est cliqué? – praty

+0

Il fait référence à 'void Button_Clicked'. –

+0

que je voulais demander ne frappe pas 'btn_Click'? – praty

Répondre

0

Je pense que vous vouliez souscrire à Button_Clicked au lieu de ButtonClicked dans GameField.

button.Click += Button_Clicked; 

Modifier

Je vois, j'ai le pressentiment que vous avez deux instances de GameField. Celui que vous avez ajouté via le concepteur de formulaires, probablement nommé gameField1 et celui que vous avez ajouté dans le code à votre formulaire appelé gameField.

Si vous ouvrez Form1.Designer.cs pouvez-vous voir un gameField1 là (ou quel que soit le nom que vous avez donné lorsque vous l'avez ajouté via le concepteur)?

Pouvez-vous essayer ce qui suit:

gameField1.ButtonClicked += new EventHandler(btn_Clicked); // name can be other than gameField1, gameField1 is just the automatically generated name by VS 
+0

Oui, il devrait être, mais je suis désolé que c'était erreur de frappe. Mais le problème est toujours le même ... –

+0

Incroyable! Merci beaucoup! Maintenant, cela fonctionne correctement ... :) –