2017-06-30 13 views
0

フォームクラス外でMouseClickイベントに関数を割り当てるときに問題が発生します。MouseClickイベントがクリックで呼び出されない

マウスボタンをクリックすると、イベントが呼び出されません。この方法は、既存のフォームから呼び出されている場合は

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

フォームが表示されていません。少なくとも、このコードのものではありません。 – LarsTech

+1

表示している例では問題は再現されません。質問を投稿する際には、[最小限の、完全で、検証可能な例を作成する](https://stackoverflow.com/help/mcve)してください。 –

+0

@RufusL Form1はすでに表示されています。 OPは、間違ったフォームにMouseClickを割り当てています。 – LarsTech

答えて

2

は、あなたはおそらくだけ(現在あなたが新しいフォームと対話している)メソッドに渡されるフォームインスタンスのための方法が必要です。

class Animator 
{ 
    private Form1 _form; 

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

     // rest of code ommitted... 

を次に、あなたはForm1からAnimatorをインスタンス化するとき、フォームのインスタンスを渡します:これを行う1つの方法は、あなたの方法にForm1パラメータを追加することです

Animator animator = new Animator(this); 

実際にForm1という新しいインスタンスを作成する場合は、_form.Showに電話する必要があります。

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

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

     // rest of code ommitted... 
関連する問題