0

我在运行时绘制一行标签并附加名称属性以识别它们我如何获取事件处理程序以获取选定/单击的运行时控件属性(文本)

   for (int yy = 1; y < 40; y++)
   {
     Label TT = new Label();
     TT.Name = "TT" + yy.ToString();
     TT.Location = new Point(xx, zz);
     TT.BorderStyle = BorderStyle.FixedSingle;
     TT.Click+= new EventHandler(TT_Click);
     TT.Width = 20;
     TT.Text = yy.ToString();
      this.Controls.Add(TT);
       xx += 20;
    }

   void TT_Click(object sender,EventArgs e)
        {
               ???????????????
        }
4

2 回答 2

1

sender应该是这样的:

void TT_Click(object sender,EventArgs e) {
  var label = (Label)sender;
}

然后随心所欲地处理它,识别它等等。

但是,请注意这些处理程序被不正确地调用:太多次我看到程序员在诸如TT_Click(null, new EventArgs())etc 之类的代码中“手动”调用这些处理程序。您最好将一些健全性检查作为逻辑的一部分。

于 2013-04-26T09:29:30.287 回答
0
 void TT_Click(object sender,EventArgs e) {
     if(sender == null) return; //return if the sender object is null
     MessageBox.Show(((Label)sender).Text); //Shows a MessageBox whith the Text of the Label
 }

Sender 是一个对象,其中包含此事件的发送者,在您的情况下是标签之一。现在您必须将其转换为标签,然后才能访问文本属性。

于 2013-04-26T09:31:37.393 回答