2009-06-17 12 views
0

Ich mag ein Steuerelement aktualisieren, basierend auf einem Wert z:C# Programmierung Praxis

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

oder mit einer switch-Anweisung erfolgen und so auf weiteren 20-mal zum Beispiel.

Ist es möglich, diese Methoden setzen zu setzen in einem Wörterbuch, so muss ich nur den Schlüssel eingeben, um die Methode statt Iterieren durch jede Anweisung zu handeln.

Oder können Sie mich auf eine Praxis hinweisen, die mich dazu bringen würde, dies zu erreichen? Oder wie erreicht man dies in weniger Code?

+0

Ist es absichtlich, dass Sie verschiedene Zeichenfolgen vergleichen, z. (StringName == StringName2) vs. (StringName3 == StringName4)? Dies macht einen großen Unterschied für die Lösung. –

Antwort

7

Ja, Sie könnten alle Listboxen in ein Wörterbuch wie folgt einfügen;

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

Verdammt! du schlägst mich dazu ... + 1 – Pondidum

+0

Kirschstein hat eine tolle Lösung. Wenn der Punkt von annakata (unten) gültig ist: Sie testen mit verschiedenen Zeichenfolgen, können Sie diese Lösung dennoch verwenden, solange eine 1: * string: ListBox-Beziehung vorhanden ist, geben Sie die ListBox nur mehr als einmal in das Dictionary ein. z.B. _Dictionary.Add ("string1", ListBox1); _Dictionary.Add ("string2", ListBox1); – Mark

+0

Wenn ich dir ein E-Bier kaufen könnte, würde ich dir sehr danken: D – North

1

Sicher. Verwenden Sie das Wörterbuch mit dem Schlüssel, der einen StringName enthält, und einem Wert, der ein Listbox enthält. Dann verwenden Sie:

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

x2 auch für dich: D – North