2009-02-03 6 views
2

Originaly a affiché un certain temps sur un autre forum, espère pouvoir trouver un peu plus d'aide ici :)Appel DataBindings.Clear() sur plusieurs, le même nom contrôles

Salut les gars,

Je suis Bien sûr, c'est une question assez simple, mais je suis nouveau pour beaucoup de programmation et C#. Je trouve je dois effacer DataBindings sur plusieurs contrôles et actuellement:

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

Ce ne peut pas être la meilleure façon de le faire peut-il? J'ai également besoin de mettre toutes ces valeurs de texte à "", puis-je les regrouper d'une certaine façon et appeler clairement sur l'ensemble du groupe?

Merci beaucoup à l'avance G

Répondre

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

Cela pourrait faire le travail. Ou si vous êtes plus d'un puriste:

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

+1 pour la solution Purist! ;-) – Cerebrus

+0

Comportement basé sur le nom d'un contrôle est toujours un peu sommaire, après tout! ;) – Quibblesome

+0

Regardez comme de bonnes options pour moi. Cependant, quelles sont vos opinions sur la façon dont cela se compare à votre recommandation de «conteneur» ci-dessous, Cerebrus? –

0

Dans ce genre de scénario, je trouve qu'il est préférable d'inclure les commandes que je veux manipuler, dans une sorte de récipient, par exemple un groupe spécial. L'itération devient alors 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(); 
    } 
    } 
} 
Questions connexes