2017-06-30 5 views
0

Ich habe ein Problem beim Zuweisen einer Funktion zu dem MouseClick-Ereignis außerhalb meiner Formularklasse.MouseClick-Ereignis ruft bei Klick nicht auf

Wenn ich meine Maustaste klicke, wird das Ereignis nicht aufgerufen.

class Animator 
{ 
    Form1 _form = new Form1(); 
    Timer GameTimer; 
    PictureBox GameWindow; 

    public Animator(Timer gameTimer, PictureBox gameWindow) 
    { 
     GameTimer.Tick += GameTimer_Tick; 
     GameTimer.Start(); 
     _form.MouseClick += Mouse_Clicked;    
     GameWindow.Paint += GameWindow_Paint; 
    } 

    private void Mouse_Clicked(object sender, MouseEventArgs e) 
    { 
     Console.Write("I AM CLICKED");   
    } 
+1

Ihr Formular wird nicht angezeigt. Zumindest nicht die in diesem Code. – LarsTech

+1

Das Beispiel, das Sie zeigen, reproduziert das Problem nicht. Bitte [erstellen Sie ein minimales, vollständiges und überprüfbares Beispiel] (https://stackoverflow.com/help/mcve), wenn Sie Ihre Frage posten. –

+0

@RufusL Form1 wird bereits angezeigt. Das OP weist MouseClick dem falschen Formular zu. – LarsTech

Antwort

2

Wenn diese Methode aus einer bestehenden Form aufgerufen wird, dann müssen Sie wahrscheinlich nur einen Weg für die Formularinstanz an die Methode übergeben wird (zur Zeit sind Sie mit einer neuen Form interagieren). Eine Möglichkeit, dies zu tun, wäre ein Form1 Parameter Ihrer Methode hinzuzufügen:

class Animator 
{ 
    private Form1 _form; 

    public Animator(Form1 form) 
    { 
     _form = form; 
     _form.MouseClick += Mouse_Clicked; 

     // rest of code ommitted... 

Dann, wenn Sie Animator von Form1 instanziiert, würden Sie in einer Instanz der Form übergeben:

Animator animator = new Animator(this); 

Wenn Sie tatsächlich eine neue Instanz von Form1 erstellen möchten, müssen Sie _form.Show anrufen, damit Sie mit dem folgenden Formular interagieren können:

class Animator 
{ 
    private Form1 _form = new Form1(); 

    public Animator() 
    { 
     _form.MouseClick += Mouse_Clicked; 
     _form.Show(); 

     // rest of code ommitted... 
Verwandte Themen