Kurs: Core Windows Forms Technologies
Modul: Windows aplikacije
Autor: Marko Stojićević
Naziv jedinice: Napredne Windows kontrole
Materijali vezani uz ovu lekciju:
-
Test napredne windows kontrole -
Napredne Windows kontrole (PDF dokument)
ComboBox i ListBox kontrola
Pošto kontrole ComboBox i ListBox imaju identične osobine i događaje, a razlikuju se u načinu prikaza podataka na formi, osobine ovih kontrola biće obrađene na primeru kombo boksa. Ovo važi za situaciju kada je ListBox kontroli dozvoljena samo jednostruka selekcija. Svojstvo SelectedIndex vraća indeks selektovane stavke kombo boksa bazirano na nuli. Ako je indeks selektovane stavke -1 to znači da nijedna stavka nije selektovana. ComboBox ima Items kolekciju koja služi za dodavanje stavki kombo boksa. Dodavanje stavki se može izvršiti iz koda na jedan od dva načina. Ovakav način dodavanja stavki se primenjuje u slučaju potrebe dinamičkog dodavanja i uklanjanja stavki iz kombo boksa. Najlakši način dodavanja stavki u kombo boks je klik na Items property koji se nalazi u property prozoru ove kontrole čime se otvara editor za unos stavki kombo boksa. Metoda FindString pronalazi prvu stavku u kombo boksu koja počinje sa tim stringom.
Dodavanje stavki u kombo boks iz dizaj moda vrši se klikom na strelicu koja se nalazi u gornjem desnom uglu ComboBox kontrole, pri čemu se otvara prozor ComboBox Tasks. Klikom na link Edit Item otvara se String Collection Editor koji omogućava unos stavki u ComboBox kontrolu.
Kad god se promeni selekcija u ComboBox kontroli generiše se događaj SelectedIndexChanged i izvršava se odgovarajući event handler. Korišćenjem svojstva SelectedItem iščitava se selektovana stavka iz ComboBox kontrole. Pošto svojstvo SelectedItem vraća promenljivu tipa object neophodno je pozvati ToString metodu.
string selektovano = comboBox1.SelectedItem.ToString();
ListBox kontrola
Razlika između ComboBox i ListBox kontrola je u načinu prikaza stavki ako je svojstvo SelectionMode postavljano na vrednost One. Svojstvo SelectionMode ListBox kontrole može se postaviti i na vrednost MultiSimple i tada će biti dozvoljeno selektovanje više od jedne stavke ListBox kontrole, korišćenjem tastera SHIFT ili CTRL.
U slučaju višestruke selekcije ne obrađuje se događaj SelectedIndexChanged. Najčešće se ispituje da li je neka stavka selektovana ili ne u event handleru za klik događaj na dugme. Korišćenjem foreach petlje može se proći kroz sve stavke i proveriti da li je selektovana ili ne.
private void button1_Click(object sender, EventArgs e)
{
textBox1.Clear();
foreach (object selektovano in listBox1.SelectedItems)
{
textBox1.AppendText(selektovano.ToString() +
Environment.NewLine);
}
}
DateTimePicker Kontrola
Omogućava setovanje datuma ili vremena korišćenjem jednostavnog grafičkog interfejsa. Svojstvo Format omogućava setovanje formata prikaza u kontroli. Svojstvo Value određuje trenutno setovani datume ili vreme. Ukoliko se kao Fomat setuje Time, treba postaviti svojstvo ShowUpDown na vrednost True. Format svojstvo se može postaviti i na Custom tako da se može korisnički definisati. Tada je potrebno postaviti željeni format u CustomFormat svojstvu.
Datum i vreme se iz DateTimePicker kontrole iščitavaju korišćenjem svojstva Value. Iščitana vrednost je objekat klase DateTime. Pozivom jedne od metoda ToShortDateString ili ToShortTimeString se prikazuje datum ili vreme sadržano u objektu klase DateTime.
DateTime dt1 = dateTimePicker1.Value;
string datum = dt1.ToShortDateString();
string vreme = dt2.ToShortTimeString();
MonthCalendar kontrola
Omogućava korisniku da selektuje opseg datuma. Svojstvo MaxSelectionCount određuje maksimalan broj dana koji se može selektovati korišćenjem ove kontrole. Svojstvo SelectionStart određuje početni datum selektovanog intervala. Svojstvo SelectionEnd određuje završni datum selektovanog intervala.
Selektovanje početnog datuma vrši se klikom na željeni datum, a zatim se pritisne taster SHIFT i selektuje poslednji datum opsega.
Razlika između SelectionStart i SelectionEnd vrednosti može se izračunati korišćenjem klase TimeSpan. Pomoću svojstva Days TimeSpan klase, računa se broj dana koji su sadržani u ovom vremenskom intervalu.
TimeSpan ts = monthCalendar1.SelectionEnd - monthCalendar1.SelectionStart;
int brojDana = ts.Days;
TrackBar kontrola
Omogućava korisniku da pomoću klizača odabere željenu vrednost koja se nalazi u datom opsegu vrednosti. Maximum svojstvo definiše maksimalnu vrednost na TrackBaru. Minimum svojstvo definiše minimalnu vrednost na TrackBaru. SmallChange svojstvo određuje broj pozicija pomeranja klizača pri pritiskanju strelica sa tastature. LargeChange određuje broj pozicija pomeranja klizača pri pritiskanju tastera PageUp i PageDown. Svojstvo Value predstavlja tekuću vrednost klizača. Svojstvo TickFrequency određuje broj podela klizača. Pri pomeranju klizača se generiše Scroll događaj.
private void trackBar1_Scroll(object sender, EventArgs e)
{
textBox1.Text = trackBar1.Value.ToString();
}
PictureBox kontrola
PictureBox kontrola je osnovna kontrola za prikaz slike u korisničkom interfejsu. Svojstvo Image služi za čitanje i setovanje slike koja je učitana odnosno koja će biti postavljana unutar PictureBox kontrole. Svojstvo SizeMode definiše kako će slika biti prikazana u okviru ove kontrole, tj. da li će biti prikazana u normalnoj veličini, da li će biti deformisana, centrirana ili će se po potrebi smanjiti ili povećati. Prevlačenjem PictureBox kontrole na formu u njenom desnom gornjem uglu se pojavljuje strelica čijim se klikom otvara PicrureBox Tasks prozor. Klikom na link Choose Image otvara se Select Resource dijalog koji omogućava da odaberemo sliku koja će biti prikazana u okviru ove kontrole.
Klase Image i Bitmap
Za rad sa slikama u .NET okruženju moguće je koristiti klase Image i Bitmap. Image je apstraktna klasa koja omogućava rad sa bmp, jpg i tiff fajlovima. Bitmap je najčešće korišćena klasa za rad sa postojećim slikama, kao i za kreiranje novih slika. Različiti konstruktori omogućavaju kreiranje Bitmap slike iz postojeće slike ili kreiranje nove Bitmap slike.
ImageList komponenta
Koristi se za kreiranje liste slika koje se kasnije mogu koristiti u aplikaciji. Svojstvo Images vraća kolekciju slika ove komponente. Pojedinim slikama iz kolekcije pristupa se na osnovu njenog rednog broja u kolekciji. Klikom na dugme sa tri tačke desno od svojstva Images u property prozoru ove kontrole otvara se Images Collection Editor koji omogućava jednostavno dodavanje slika u kolekciju.