2 回答

TA貢獻1883條經(jīng)驗 獲得超3個贊
您可以使用單個方法和sender參數(shù)。這是經(jīng)過最少更改的代碼。您可以為所有事件設(shè)置一個獨立的靜態(tài)方法,然后選中sender。
lblData[i].MouseEnter += (sender, e) => {((Label)sender).BackColor = Color.LightBlue;};
所有Label實例都可以訂閱的更安全且速度稍快的版本。
出于以下原因,靜態(tài)方法的性能更好,您可以避免使用閉包,這可以確保事件由觸發(fā)Label。
private static void label_MouseEnter(object sender, EventArgs e)
{
var label = sender as Label;
if (label == null)
return;
label.BackColor = Color.LightBlue;
}

TA貢獻2037條經(jīng)驗 獲得超6個贊
這個怎么樣?
Label[] lblData = new Label[255];
int calcLoc = 0;
for (int i = 0; i <= 200; i++)
{
calcLoc = 25 * i;
Label label = new Label();
label.Location = new Point(10, calcLoc);
label.Text = "Test " + i;
label.MouseEnter += (sender, e) =>
{
label.BackColor = Color.LightBlue;
};
InfoPanel.Controls.Add(label);
lblData[i] = label;
}
甚至這個:
Label[] lblData =
Enumerable
.Range(0, 201)
.Select(i =>
{
var calcLoc = 25 * i;
Label label = new Label();
label.Location = new Point(10, calcLoc);
label.Text = "Test " + i;
label.MouseEnter += (sender, e) =>
{
label.BackColor = Color.LightBlue;
};
InfoPanel.Controls.Add(label);
return label;
})
.ToArray();
- 2 回答
- 0 關(guān)注
- 219 瀏覽
添加回答
舉報