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