2017-09-27 57 views
-2

我想做一個列表,其中每一行都有自己的刪除按鈕。方法名稱預期的錯誤在C#

private Button createDeleteButton() 
{ 
    int rowToDelete = ctr; 
    Button deleteBtn = new Button(); 
    deleteBtn.Text = "x"; 
    deleteBtn.Click += new EventHandler(RemoveRow(rowToDelete)); 
    return deleteBtn; 
} 


protected void RemoveRow(int specificRow) 
{ 

    TableRow rw = table.Rows[specificRow]; 
    table.Rows.Remove(rw); 

    ctr--; 

    Session["table"] = table; 
    ViewState["ctr"] = ctr; 

} 

不過,我得到的

deleteBtn.Click += new EventHandler(RemoveRow(rowToDelete)); 

任何想法上RemoveRow(rowToDelete)錯誤 「無法定義的方法」?

+0

請**不要**修改你的問題,要求完全不同的東西。這會使人們給你的所有答案無效,浪費他們爲幫助你而付出的所有努力。相反,問另一個問題。 – poke

回答

0

使用閉包來捕獲您的rowToDelete變量。

deleteBtn.Click += (s, e) => RemoveRow(rowToDelete); 

但請注意,這可能會導致內存泄漏,因爲您不會取消訂閱事件。

+0

它解決了錯誤,但方法是(出於某種原因)從未以此方式調用 – Luc

1

這將爲你做的伎倆。

private void Form1_Load(object sender, EventArgs e) 
    { 
     int rowToDelete = 1; 
     Button deleteBtn = new Button(); 
     deleteBtn.Text = "x"; 
     deleteBtn.Click += (snd, evtargs) => { RemoveRow(snd, evtargs, rowToDelete); }; 
    } 

    private void RemoveRow(object sender, EventArgs e, int index) 
    { 
     //your code 
    }