Kontrola ListBox Jedna od kontrola koja pruža izbor jedne od više mogućih stavki iz neke liste je List Box kontrola. Lista stavki u kontroli ListBox ista je kao u kontroli Co mboBox i naziva se Items. Items je primer posebne vrste objekata u C#, a to je kolekcija ( skup objekata istog tipa). Lista se može formirati: - u toku dizajna (kao kod kontrole ComboBox) ili - dodavanjem stavki u vreme izvršavanja aplikacije (npr. iz neke baze podataka). Mi ćemo za sada listu da popunjavamo ponavljanjem nekog događaja (npr. klikom na dugme) ili pomoću FOR petlje iz koda. Da ponovimo ono što smo naučili o svojstvu Items kod ComboBox-a: - svaki član liste (kolekcije) ima svoj jedinstveni indeks koji počinje od 0 do listBox1.Items.Count-1 , - svojstvo Count je samo za čitanje i daje i daje broj objekata u listi (listBox1.Items.Count), - lista ima metode kojima se može dodavati nov objekat u kolekciju (Add), obrisati pojedinačni objekat (RemoveAt) ili obrisati sve članove kolekcije (Clear). npr. listBox1.Items.Add(textBox1.Text); listBox1.Items.RemoveAt (2); listBox1.Items.Clear (); - pojedinačnim objektima (stavkama) liste pristupa se preko indeksa: npr. listBox1.Items[5].ToString() . Kontrola ListBox nalazi se na listi ToolBoxi na slici je njena primena u Wordu na kartici Insert+Object.
Primer. Napraviti aplikaciju u kojoj korisnik unosi proizvoljan broj dnevnih temperaturi od kojih se pravi lista (ListBox) i zatim bira da se prikaže prosečna, maksimalna ili minimalna temperatura (ComboBox).
Uputstvo: 1.Na formu postaviti kontrole.
ListBox ComboBox
2. Nakon svakog unosa temperatute i izbora dugmeta Dodaj u listu trebalo bi da se uneti broj prikaže u prikaže u ListBox-u. Istovremeno bi trebalo da se računa zbir temperatura (zbog prosečne temperature), minimalna i maksimalna temperatura. Da bi se te vrednosti videle i u funkciji comboBox1_SelectedIndexChanged moraju da se deklarišu kao globalne promenljive p romenljive is pred pred svih funkcija: int min, max, s = 0; int min, private void void button1_Click( button1_Click(object object sender, sender, EventArgs EventArgs e) e)………. ……….
3. Kod dugmeta Dodaj u listu. private void void button1_Click( button1_Click(object object sender, sender, EventArgs EventArgs e) e) { int t; int t; listBox1.Items.Add(textBox1.Text); // temperatura se dodaje u listu t = Convert Convert.ToInt32(textBox1.Text); .ToInt32(textBox1.Text); // prevodi se u ceo broj if (listBox1.Items.Count if (listBox1.Items.Count == 1) // ako je broj stavki u listi 1, tj. unet je prvi broj { min = t; // poèetne vrednosti za min i max max = t; } s += t; // dodavanje sumi temperatura if (max (max < t) max = t; if (min (min > t) min = t; label3.Text = "" "";; // na kraju se briše sadržaj textbox-a textbox-a i labele textBox1.Text = "" "";; textBox1.Focus(); }
4. Kod za dogaðaj vezan za promenu ComboBox-a: private void void comboBox1_SelectedIndexChanged( comboBox1_SelectedIndexChanged(object object sender, sender, EventArgs EventArgs e) e) { int n; int n; float p; float p; p = (float (float)s )s / listBox1.Items.Count; //*** n = Convert Convert.ToInt32(comboBox1.SelectedIndex); .ToInt32(comboBox1.SelectedIndex); if (n (n == 0) label3.Text = p.ToString("0.00" p.ToString("0.00"); ); //definiše se broj decimala decimala if (n (n == 1) label3.Text = max.ToString(); if (n (n == 2) label3.Text = min.ToString(); } } ***Objašnjenje: U ovom sluèaju brojevi s i listBox1.Items.Count su celi brojevi, a rezultat treba da bude realan. Zato tada koristimo jedan od dva naèina za konverziju podataka: 1) klasu Convert: p = Convert Convert.ToDouble(s .ToDouble(s / listBox1.Items.Count); 2) operator cast: p = (float float)s )s / listBox1.Items.Count), Operator cast se koristi tako što u zagradama navedemo tip u koji želimo želimo da konvertujemo vrednost izraza koji sledi. (Kada su brojevi a i b tipa int int pri raèunanju koliènika a/b rezultat rezultat je ceo broj, èime se gubi decimalan deo. Ako se taj izraz zatim dodeli realnoj promenljivi, ona kao decimale ima samo nule i koliènik nije taèan.)