Domanda

originaly postato un po 'indietro su un forum diverso, spero di poter trovare un po' di più aiuto qui:)

Ciao ragazzi,

Sono sicuro che questa è una domanda piuttosto semplice, ma io sono nuovo a molto la programmazione e C #. Trovo ho bisogno di cancellare DataBindings su diversi controlli e attualmente sono:

            lblTableValue1.DataBindings.Clear();
            lblTableValue2.DataBindings.Clear();
            lblTableValue3.DataBindings.Clear();
            lblTableValue4.DataBindings.Clear();
            lblTableValue5.DataBindings.Clear();
            lblTableValue6.DataBindings.Clear();
            lblTableValue7.DataBindings.Clear();

Questo non può essere il miglior modo di fare questo si può? Ho anche bisogno di impostare tutti questi valori di testo a "", posso raggrupparli in qualche modo e chiamare chiaro su tutto il gruppo?

Molte grazie in anticipo G

È stato utile?

Soluzione

foreach(Control c in this.Controls)
{
    if(c.Name.StartsWith("lblTableValue"))
    {
        c.DataBindings.Clear();
    }
}

Che potrebbe fare il lavoro. Oppure, se siete più di un purista:

foreach(Control c in new Control[]
    {
        lblTableValue1,
        lblTableValue2,
        etc
    })
{
    c.DataBindings.Clear();
}

Altri suggerimenti

In questo tipo di scenario, lo trovo meglio includere i controlli che voglio per manipolare, in una sorta di contenitore, per esempio un pannello. Poi iterazione diventa facile:

private void SetLabelText() 
{ 
  foreach (Control c in Panel1.Controls) 
  { 
    if (c is Label && c.ID.StartsWith("lblTableValue"))
    { 
      Label lbl = c as Label; 
      lbl.Text = string.Empty;
      lbl.DataBindings.Clear();
    } 
  } 
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top