我在运行时绘制了一行标签,并附加了name属性来识别它们我如何获得事件处理程序,以获得选中/单击运行时控制属性(文本)
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)
{
???????????????
}
应该是sender
:
void TT_Click(object sender,EventArgs e) {
var label = (Label)sender;
}
然后做你想做的,识别它,等等。
但是,要小心这些处理程序被不正确地调用:我已经多次看到程序员在代码中"手动"调用这些处理程序,例如TT_Click(null, new EventArgs())
等。作为逻辑的一部分,您最好做一些完整性检查。
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是一个对象,它包含这个事件的发送者,在你的例子中是一个标签。现在你需要把它转换成一个标签,你可以访问文本属性