Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > События ?


Автор: Miller_time 8.12.2008, 10:03
Доброго времени дня и суток,  возникла проблема, создал массив Labels , но они используют ожно и то же событие, можно как то к методу обработчику события добавить передоваемый параметр, что бы отличать их. ?


Код

lb3[i].Click += new System.EventHandler(this.label_Click2);
lb3[i].Text = "Показать";


        public void label_Click2(object sender, EventArgs e)
        {
            MessageBox.Show("test");
        }




В вообщем суть отличить какой Label был нажат, как получить id label Нажатого ? 

Автор: QryStaL 8.12.2008, 10:28
Цитата(Miller_time @  8.12.2008,  10:03 Найти цитируемый пост)
к методу обработчику события добавить передоваемый параметр

Он уже передается, называется sender.

Автор: Miller_time 8.12.2008, 11:18
в sender передаеться текст Label, название в нем звучит как Label :( 

Автор: Partizan 8.12.2008, 11:23
Miller_time, в качестве sender передаётся объект типа Label...никакой не текст...а самый обычный объект....

Автор: Miller_time 8.12.2008, 12:47
Как только не пробовал передает текст 




Код

System.Windows.Forms.Label, Text: Показать




Вот весь код добавления массива Labels на форму.
Код


                lb3[i] = new Label();
                lb3[i].Visible = true;
                lb3[i].Font = new System.Drawing.Font("Times New Roman", 17F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Pixel, ((byte)(204)));
                lb3[i].ForeColor = System.Drawing.Color.DarkBlue;
                lb3[i].AutoSize = true;
                lb3[i].Location = new System.Drawing.Point(pos_x + 170, pos_y + 95);
                lb3[i].Name = "l2" + i.ToString();
                lb3[i].Size = new System.Drawing.Size(59, 13);
                lb3[i].TabIndex = 1;
                lb3[i].Text = "Показать-"+al[4][i].ToString();
                lb3[i].Click += new System.EventHandler(this.label_Click);
                lb3[i].Click += new System.EventHandler(this.label_Click2);
                Controls.Add(lb3[i]);

Автор: Partizan 8.12.2008, 13:10
Miller_time,  smile  Это всего лишь Debugger Visualizer.... поверьте на слово..на самом деле sender имеет тип Label(если, конечно, кликнули по лэйблу)

Код

lb3[i].Click += new System.EventHandler(this.label_Click2);
lb3[i].Tag = i;
lb3[i].Text = "Показать";
        public void label_Click2(object sender, EventArgs e)
        {
            Label lbl = sender as Label;
            if (lbl != null && lbl.Tag != null)
                  MessageBox.Show(lbl.Tag.ToString());
        }

Автор: Miller_time 8.12.2008, 13:45
Спасибо, выручил.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)