2017-02-27 3 views
-2

私はカスタムボタン(ユーザーコントロール)を持っていると私は親フォームのイベントハンドラを作成したいが、私はいつもこのエラーを取得し、私が知っているドント理由:UserControlイベントハンドラの定義エラーが発生するのはなぜですか?

ユーザーコントロール:

public event EventHandler OnMyClick; 
private void label1_Click(object sender, EventArgs e) 
{ 
    if (OnMyClick != null) 
    OnMyClick("test",e); 
} 

親フォーム:

private void Form1_Load(object sender, EventArgs e) 
{ 
CreateMainMenu(); 
Computers_List ctrl = new Computers_List(); 
ctrl.OnMyClick += MainMenuClicked(); //I get error here on OnMyClick 
} 

protected void MainMenuClicked() 
{ 
//something  
} 

エラー:

重大度コード説明プロジェクトファイルの行の抑制状態 エラーCS1061 'Computers_List'に 'OnMyClick'の定義が含まれておらず、 'Computers_List'タイプの最初の引数を受け入れる拡張メソッド 'OnMyClick'がありませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)IT sklad C:\ Users \ユーザーsomap \ onedrive \それがアクティブ\ Form1.csの27をsklad \ sklad \プロジェクト\ Visual Studioの2015 \文書

+0

のパラメータを使用するように変更する必要があります。「Computers_List」の定義を投稿できますか?このエラーから、OnMyClickプロパティは存在しないと考えられます。 – Bassie

+0

ええと、ユーザーコントロール。いいえ、それはボタンコントロールです。いいえ、それはリストコントロールです。いいえ、お待ちください、それはメニューコントロールです。エル、一体何なの?まあ、それはあなたが思うものではありません。コードを見直したり、チームメンバーや友人に尋ねたりする必要があります。 –

+0

@HansPassant何ですか?私はそれがユーザーコントロールだと言った – Somachr

答えて

0

それはEventHandler定義は二つのパラメータ(objectSystem.EventArgs)を取る方法を想定しているためだ、とvoidを持っています戻り値の型。しかし、あなたが提供するものは、パラメータがありません。 MainMenuClickedメソッドを変更して、タイプが(object,System.EventArgs)(つまりprotected void MainMenuClicked(object sender, EventArgs e)

+0

動作しませんでした。まだ同じです – Somachr

+0

エラーが発生している行の()を削除する必要があります。メソッドを呼び出す必要はありません。メソッドを参照したいだけです。あなたが達成したいもののもう一つの構文は、このようなものです。 'ctrl.OnMyClick + =新しいEventHandler(MainMenuClicked);' – welrocken

関連する問題