mardi 31 mars 2015

Array of reference (or pointer) to labels in c#

Say I have a form with a long bunch of temperature readouts, so in the designer:



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();


In the main form code, how do I add the labels to an array so that I can update the labels using a loop in a timer event eg:



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;
}


How do I create the labels[MAX_DEVICES] array? Must I use:



private Label[] labels = new Label[MAX_DEVICES];


or is there a way to get a reference (or pointer) to the existing label(s) without creating new labels? Coming from a C++ background where I might have simply stored the address of each label in an array.


Aucun commentaire:

Enregistrer un commentaire