說我有具有長一堆溫度讀數的形式,所以在設計:陣列的引用(或指針)的標籤在c#
this.lblTemperatureDevice01 = new System.Windows.Forms.Label();
this.lblTemperatureDevice02 = new System.Windows.Forms.Label();
this.lblTemperatureDevice03 = new System.Windows.Forms.Label();
// ...
this.lblTemperatureDevice50 = new System.Windows.Forms.Label();
在主要形式代碼,如何添加的標籤到一個數組,這樣我可以在一個計時器事件例如使用循環更新標籤:
private void tmrUpdateLabels_Tick(object sender, EventArgs e)
{
// Disable timer
tmrUpdateLabels.Enabled = false;
if (m_bExiting)
return;
// Update temperatures (if device has returned a reading)
for (int device = 0; device < MAX_DEVICES; device++)
{
if (m_aHasNewReading[device])
{
m_aHasNewReading[device] = false;
labels[device].Text = m_aTemperature[device].ToString();
}
}
// Restart timer
tmrUpdateLabels.Enabled = true;
}
如何創建標籤[MAX_DEVICES]數組?我必須使用:
private Label[] labels = new Label[MAX_DEVICES];
或者有沒有辦法在不創建新標籤的情況下獲得對現有標籤的引用(或指針)?來自C++背景,我可能簡單地將每個標籤的地址存儲在一個數組中。
標籤*爲*參考。 'Label copy = lblTemperatureDevice01;''copy''指向與'lbl ... 01'相同的對象' – Default 2015-03-31 10:55:40
'new Label []'只創建數組,而不是'Label'本身。 .NET中唯一具有價值語義的是值類型 - 原語('string'是一個例外),'struct'。 – Luaan 2015-03-31 10:56:00
當您使用設計器在表單上放置50個標籤時,您確實走得很深。程序員永遠不會做任何事情超過兩次。扔掉這個並重新開始。如果你不知道要寫什麼代碼,那麼首先要看設計師做的方式。然後只做*一次*做了50次。 – 2015-03-31 10:56:48