2010-10-28 55 views
13

我從代碼隱藏構造一個LinkBut​​ton,並且我需要將onclick分配給一個方法,並將其傳遞給一個參數。我有這個至今:將LinkBut​​ton的OnClick事件設置爲隱藏代碼中的方法

LinkButton lnkdel = new LinkButton(); 
lnkdel.Text = "Delete"; 

我想將它傳遞給看起來像這樣的方法:

protected void delline(string id) 
     { 

     } 

回答

31

那麼你不能把它傳遞給那個方法,您需要將click事件委託分配給能夠處理它的方法。

像這樣:如果你想傳遞一個參數

lnkdel.Click += new EventHandler(DynamicClick); 

,使用CommandArgument,你會需要一個不同的委託:

public void DynamicClick(object sender, EventArgs e) { 
    // do something 
} 

指定像任何事件的點擊事件:

void DynamicCommand(Object sender, CommandEventArgs e) 
     { 
     Label1.Text = "You chose: " + e.CommandName + " Item " + e.CommandArgument; 
     } 

然後:

lnkDel.Command += new CommandEventHandler(DynamicCommand) 
lnkDel.CommandArgument = 1234; 

順便說一句,如果你在> = C#3,您還可以使用匿名方法的涼意:

lnkDel.Command += (s, e) => { 
    Label1.Text = "You chose: " + e.CommandName + " Item " + e.CommandArgument; 
}; 
+0

謝謝哥們,我試圖使用第二種方法你張貼作爲目的是該職位是通過一個ID通過刪除。 .OnCommand沒有出現在智能感知列表中,當我嘗試輸入它時,它告訴我LinkBut​​ton由於其保護級別而無法訪問? – Chris 2010-10-28 09:08:58

+1

@Chris - 是的,忘記了linkbutton的'bug /功能'。試試這個:'lnkDel.Command + = new CommandEventHandler(DynamicCommand)'或者只是'lnkDel.Command + = DynamicCommand'。 – RPM1984 2010-10-28 09:39:28

+0

感謝哥們,它編譯,但它似乎沒有進入命令 - 我錯過了什麼?我也嘗試了C#3方法,它編譯但是再也沒有進入該方法 – Chris 2010-10-28 15:24:34

1

的函數原型爲這個事件是:

protected void lnkdel_OnClick(object _sender, EventArgs _args) 
{ 
    LinkButton src = (LinkButton)_sender; 
    // do something here... 
} 

與它分配:

LinkButton lnkdel = new LinkButton(); 
lnkdel.Text = "Delete"; 
lnkdel.OnClick += new EventHandler(lnkdel_OnClick); 
相關問題