2013-04-26 65 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 
} 

發件人是一個對象,它包含此事件的發件人,在您的情況下是其中一個標籤。現在,您必須將其轉換爲標籤,然後才能訪問文本屬性。

相關問題