第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將事件設(shè)置為數(shù)組C#中的對象

將事件設(shè)置為數(shù)組C#中的對象

C#
慕容3067478 2021-05-14 22:39:35
我有一個標簽數(shù)組,我想添加鼠標輸入,并在這些標簽上留下事件。該標簽是通過編程方式創(chuàng)建的:            Label [] lblData = new Label[255];        int calcLoc = 0;        for (int i = 0; i <= 200; i++)        {            calcLoc = 25 * i;            lblData[i] = new Label();            lblData[i].Location = new Point(10, calcLoc);            lblData[i].Text = "Test " + i;            InfoPanel.Controls.Add(lblData[i]);        }我嘗試過的事情:在循環(huán)中設(shè)置事件(顯然是行不通的)lblData[i].MouseEnter += (sender, e) => {lblData[i].BackColor = Color.LightBlue;};在循環(huán)之前設(shè)置事件(有可能這樣做)lblData[].MouseEnter += (sender, e) => {lblData[].BackColor = Color.LightBlue;};都不起作用。
查看完整描述

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;

}


查看完整回答
反對 回復(fù) 2021-05-23
?
阿晨1998

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();


查看完整回答
反對 回復(fù) 2021-05-23
  • 2 回答
  • 0 關(guān)注
  • 219 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號