2009-06-17 7 views
0

Je veux mettre à jour un contrôle basé sur une valeur par exemple:C# pratique de programmation

 if (StringName == StringName2) 
      ListBox1.Items.Add("send data"); 
     else if (StringName3 == StringName4) 
      DifferentListBox.Items.Add("send data"); 
     else if (StringName5 == StringName3) 
      AnotherListBox.Items.Add("send data"); 

Ou fait à l'aide d'une instruction switch et ainsi de suite une autre 20 fois par exemple.

Est-il possible de mettre ces méthodes (OneOfTheListBoxes.Items.Add("send data") à mettre dans un dictionnaire, donc j'ai seulement besoin d'entrer la clé pour actionner la méthode au lieu d'itérer à travers chaque déclaration.

Ou pouvez-vous me diriger vers une pratique qui me permettrait d'atteindre cet objectif? Ou comment y parvenir en moins de code?

+0

Est-il intentionnel de comparer différentes chaînes, par ex. (StringName == StringName2) vs. (StringName3 == StringName4)? Cela fait une grande différence pour la solution. –

Répondre

7

Oui, vous pouvez mettre toutes les listes dans un dictionnaire comme ça;

Dictionary<string, ListBox> _Dictionary; 

public Something() //constructor 
{ 
    _Dictionary= new Dictionary<string, ListBox>(); 
    _Dictionary.add("stringname1", ListBox1); 
    _Dictionary.add("stringname2", ListBox2); 
    _Dictionary.add("stringname3", ListBox3); 
} 


.... 


public void AddToListBox(string listBoxName, string valueToAdd) 
{ 
    var listBox = _Dictionary[listBoxName]; 
    listBox.Items.Add(valueToAdd); 
} 
+0

putain! vous me battez ... + 1 – Pondidum

+0

Kirschstein a une excellente solution. Si le point d'annakata (ci-dessous) est valide: vous testez différentes chaînes, vous pouvez toujours utiliser cette solution tant qu'il existe une relation 1: * string: ListBox, il suffit d'entrer ListBox plus d'une fois dans le dictionnaire. par exemple, _Dictionary.Add ("string1", ListBox1); _Dictionary.Add ("string2", ListBox1); – Mark

+0

Si je pouvais vous acheter une e-bière, je vous remercie beaucoup: D – North

1

Sure. Utilisez un dictionnaire avec la clé contenant un StringName et une valeur contenant une Listbox. Ensuite, utilisez:

myDict[StringName].Items.Add("send data") 
+0

x2 pour vous aussi: D – North

Questions connexes