2013-04-26 62 views
0

我在运行时绘制了一行标签并附加了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) 
     { 
       ??????????????? 
     } 

回答

1

sender要的东西:

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

然后做你会用它,识别它,并依此类推。

但是请注意,这些处理程序被错误地调用:我曾经看过很多次,程序员在代码中调用这些“手动”的代码,如TT_Click(null, new EventArgs())等等。您最好做一些理智检查,作为逻辑的一部分。

+0

酷,这工作,我得到更多的东西,我只看文本属性,我也越来越gettype。我如何隔离这些返回类型或仅选择文本属性?再次感谢 – 2013-04-26 09:49:20

+0

对不起,得到那一个正在使用tostring(),应该有双重检查使用文本属性无效TT_Click(对象发件人,EventArgs e) {0121} {varier =((标签)发件人); MessageBox.Show(labl.Text); //MessageBox.Show(label.GetType()。GetProperty(“Name”)。ToString()); } – 2013-04-26 09:52:31

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 
} 

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

相关问题