C# - NameValueCollection osztály használata

forráskód letöltése
NameValueCollection osztály segítségével olyan sztring listát hozhatunk létre, ahol minden elem sorozathoz egy-egy kulcs értéket rendelhetünk. Egy kulcshoz tehát tetszőleges számú sztring tartozhat, melyet természetesen elérhetünk, kezelhetünk a listában.
Első lépésként hozzunk létre egy ilyen osztályt.
    private NameValueCollection nv = new NameValueCollection();
Ezt követően készítünk egy belső függvényt, mellyel minden változás után kiírathatjuk majd a lista tartalmát egy ListBox-ba. Ehhez készítünk egy ciklust, mely végigmegy a listán. Ehhez a NameValueCollection osztály Count property-je adja azt az információt, hogy hány eleme van a listának. A Keys property egy tömb, mely sztringeket tárol, méghozzá a kulcsok megnevezéseit. A Get függvénnyel kérdezhetünk le egy adott érték listát. Itt, ha több érték is tartozik egy elemhez, akkor vesszővel elválasztva lesznek felsorolva. Ha a Get függvény paramétereként egy számot adunk meg, akkor ezzel az adott sorszámú elemet érjük el, ha egy sztringet adunk meg, akkor egy keresés történik, hogy van-e ilyen szövegű kulcs, mint a megadott paraméter és ha van, akkor az ahhoz tartozó értékeket kapjuk meg.
    private void UpdateList()
    {
      listBox1.Items.Clear();
      for (int i=0; i<nv.Count; i++)
      {
        listBox1.Items.Add(nv.Keys[i] + " - " + nv.Get(i));
      }
    }
A listához új elemet az Add függvénnyel adhatunk. Itt első paraméterként a kulcs sztringjét kell átadnunk, másodikként a hozzátartozó értéket.
    private void button1_Click(object sender, System.EventArgs e)
    {
      Random r = new Random();
      for (int i=0; i<10; i++)
      {
        nv.Add("name" + i.ToString(), "value" + r.Next(100).ToString());
        nv.Add("name" + i.ToString(), "value" + r.Next(100).ToString());
      }
      UpdateList();
    }
Ha többször hívjuk az Add függvényt úgy, hogy azonos a kulcs, akkor ezzel bővíthetjük az egy kulcshoz tartozó értékek számát. Ezt a mellékelt példában úgy tehetjük meg, hogy az Add gombra többször kattintunk.
Egy adott sorszámon lévő kulcs megnevezését a GetKey függvénnyel is lekérdezhetjük.
    private void button2_Click(object sender, System.EventArgs e)
    {
      label1.Text = nv.GetKey(5);
    }
Ha a listánk tartalmaz kulcsokat, akkor a HasKeys property értéke igaz lesz.
    private void button3_Click(object sender, System.EventArgs e)
    {
      label2.Text = nv.HasKeys().ToString();
    }
Egy kulcsot, minden értékével együtt törölhetünk a listáról a Remove függvény hívásával. Itt paraméterként a kulcs nevét kell megadnunk sztringként.
    private void button4_Click(object sender, System.EventArgs e)
    {
      nv.Remove("name0");
      UpdateList();
    }
Egy adott kulcshoz tartozó értéket módosíthatunk is a Set függvény hívásával.
    private void button5_Click(object sender, System.EventArgs e)
    {
      nv.Set("name1", "  new value");
      UpdateList();
    }
A teljes lista törlését a Clear függvény végzi.
    private void button6_Click(object sender, System.EventArgs e)
    {
      nv.Clear();
      UpdateList();
    }
Egy adott kulcshoz tartozó értékekről is kérhetünk egy tömböt, melynek minden eleme egy érték sztring lesz. Ehhez a GetValues függvényt használhatjuk, vagy egy számként megadott index-szel, vagy egy sztringként megadott kulccsal.
    private void listBox1_SelectedValueChanged(object sender, System.EventArgs e)
    {
      listBox2.Items.Clear();
      foreach (string s in nv.GetValues(listBox1.SelectedIndex))
      {
        listBox2.Items.Add(s);
      }
    }