Uff, cercando e raffazzonando qualcosa l'ho ottenuto, certo che tocca stare attenti, altrimenti Visual Studio s'attapira 
Vi scrivo come ho risolto:
Questo l'ho messo sotto la dichiarazione dei controlli, subito dopo l'apertura della classe Form:
codice:
private System.Windows.Forms.Label[] lblBottoniLST;
L'inizializzazione di questi controlli array non va messa dentro InitializeComponent(), altrimenti il compilatore s'avvelena.
Ovviamente l'ho messo dentro l'evento Form_load:
codice:
this.lblBottoniLST = new Label[1];
for(int i=0;i<lblBottoniLST.Length;i++)
{
this.lblBottoniLST[i]=new System.Windows.Forms.Label();
this.lblBottoniLST[i].Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
if(i==0)
this.lblBottoniLST[i].Image = picBottone_hidden.Image;
else
this.lblBottoniLST[i].Image = picSfondoBottone_hidden.Image;
if(i==0)
this.lblBottoniLST[i].Location = new System.Drawing.Point(0, 2);
else
this.lblBottoniLST[i].Location = new System.Drawing.Point(this.lblBottoniLST[i-1].Location.X+92, 2);
this.lblBottoniLST[i].Name = "lblBottoniLST"+i.ToString();
this.lblBottoniLST[i].Size = new System.Drawing.Size(92, 21);
this.lblBottoniLST[i].TabIndex = 2;
this.lblBottoniLST[i].Text = "Bottone "+i.ToString();
this.lblBottoniLST[i].TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.lblBottoniLST[i].Click += new System.EventHandler(this.lblBottoniLST_Click);
this.Controls.Add(this.lblBottoniLST[i]);
lblBottoniLST[i].BringToFront();
}
lblBottoniLST[0].Text="Report";
La label in questione viene utilizzata come bottone, ha quindi due sfondi, quello attivo e quello disattivato.
Nel mio caso per il momento ho messo una sola label, ma se ne possono inserire quante se ne vuole aumentanto il numero nel new Label[], basta poi gestire la text per il testo visualizzato.
L'evento lblBottoniLST_Click va inserito a mano, ora vi scrivo come ho gestito l'evento che se clicco su un pulsante quello mi diventa attivo e gli altri disattivati:
codice:
private void lblBottoniLST_Click(object sender, System.EventArgs e)
{
Label tmp=(Label)sender;
for(int i=0;i<lblBottoniLST.Length;i++)
{
if(tmp.Name.Equals(lblBottoniLST[i].Name))
{
lblBottoniLST[i].Image=picBottone_hidden.Image;
}
else
{
lblBottoniLST[i].Image=picSfondoBottone_hidden.Image;
}
}
}
Sender è l'oggetto Label che ho cliccato, lo casto per farlo diventare Label e confronto il Name di sender con tutti i Name dei lblBottoniLST.
Come vedete la gestione degli eventi è molto meno penosa di quento mi potevo immaginare