2017-09-29 1 views
0

Ich habe versucht, Ereignis von einem Benutzersteuerelement zu einem Formular zu verwenden, aber wenn ich es in einem Formularkonstruktor erstellen, habe ich ein Problem. Ich weiß nicht, wo ein Fehler ist. Da ist mein Code.Feld System.MulticastDelegate._invocationCount ist nicht verfügbar 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); 
    } 

Formular

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(); 
    } 

Es gibt ein Problem enter image description here

+0

, was passiert, wenn der Knopf in Benutzersteuerung geklickt wird? – praty

+0

Es bezieht sich auf 'void Button_Clicked'. –

+0

Ich wollte fragen, schlägt es nicht 'btn_Click'? – praty

Antwort

0

Ich glaube, Sie zu Button_Clicked statt ButtonClicked in GameField abonnieren wollten.

button.Click += Button_Clicked; 

bearbeiten

Ich sehe, habe ich das Gefühl, dass Sie zwei Instanzen von GameField haben. Der eine, den Sie über den Formular-Designer hinzugefügt haben, wahrscheinlich gameField1, und der Code, den Sie Ihrem Formular hinzugefügt haben, heißt gameField.

Wenn Sie öffnen Form1.Designer.cs können Sie einen gameField1 in dort sehen (oder was auch immer Namen, den Sie gab, wenn man es durch den Designer hinzugefügt)?

können Sie versuchen, die folgenden:

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

Ja, sollte es sein, aber es tut mir leid, dass Tippfehler war. Aber das Problem ist immer noch das gleiche ... –

+0

Erstaunlich! Vielen Dank! Jetzt funktioniert es richtig ... :) –

Verwandte Themen