2017-09-29 18 views
0

userControlからフォームにイベントを使用しようとしましたが、フォームコンストラクタでイベントを作成しようとしたときに問題が発生しました。私はどこが失敗か分からない。私のコードがあります。フィールドSystem.MulticastDelegate._invocationCountは使用できません。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); 
    } 

フォーム

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

私はあなたがButton_Clicked代わりのGameFieldButtonClickedに加入したいと思う問題 enter image description here

+0

ユーザーコントロールのボタンがクリックされたときに何が起こりますか? – praty

+0

これは 'void Button_Clicked'を参照しています。 –

+0

私は 'btn_Click'にヒットしないのか聞いてみましたか? – praty

答えて

0

があります。

button.Click += Button_Clicked; 

私が見

編集は、私はあなたがGameFieldの2つのインスタンスを持っている予感を持っています。フォームデザイナーで追加したもの(gameField1)と、フォームにコードで追加したもの(gameField)があります。

Form1.Designer.csを開くと、そこにgameField1が表示されます(またはデザイナーで追加したときに指定した名前)。

は、次の試してみてください。

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

ええ、それはすべきですが、タイプミスして申し訳ありません。しかし、問題はまだ同じです... –

+0

素晴らしい!あなたは非常にThx!今それは正しく動作します:) –

関連する問題