2017-02-27 62 views
-2

我有自定義按鈕(用戶控件),我想創建父窗體的事件處理程序,但我總是得到這個錯誤,我不知道爲什麼:爲什麼我得到UserControl Eventhandler定義錯誤?

用戶控件:

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:\用戶\ somap \ onedrive \文件\的Visual Studio 2015年\項目\ IT sklad \ IT sklad \ Form1.cs中27活動

+0

您可以發佈'Computers_List'的定義嗎?從錯誤它似乎認爲沒有'OnMyClick'屬性。 – Bassie

+0

嗯,一個用戶控件。不,等待它是一個按鈕控件。不,等等,它是一個列表控件。不,等等,這是一個菜單控制。呃,這到底是什麼?那麼,不是你認爲的那樣。您需要有人查看您的代碼,向團隊成員或朋友諮詢。 –

+0

@HansPassant什麼?我說這是usercontrol – Somachr

回答

0

這是因爲EventHandler定義預計這需要兩個參數(objectSystem.EventArgs)的方法,並具有void返回類型。你提供的是什麼,沒有參數。您應該更改您的MainMenuClicked方法以採用兩種類型的參數(objectSystem.EventArgs),即protected void MainMenuClicked(object sender, EventArgs e)

+0

沒有工作,它仍然是一樣的 – Somachr

+0

你也應該刪除()上的錯誤。你不想調用這個方法,你只是想引用它。你想要完成的另一個語法就是這樣; 'ctrl.OnMyClick + = new EventHandler(MainMenuClicked);' – welrocken

相關問題