Kurs: Core Windows Forms Technologies
Modul: Windows aplikacije
Autor: Marko Stojićević
Naziv jedinice: Windows forme
Materijali vezani uz ovu lekciju:
-
Test windows forme -
Windows forme (PDF dokument)
Pojam Windows forme
Forma je osnovni elemenat korisničkog interfejsa. Forma je kontrola izvedena iz klase Form a ova je izvedena iz klase Control. Windows forme se kreiraju u slučajevima kreiranja desktop aplikacija i kada se očekuje da klijentski računari imaju dovoljno snage da izvrše odgovarajuću obradu podataka. ASP.NET Web forme se kreiraju u slučajevima kada je korisnički interfejs web browser i za aplikacije koje se objavljuju putem web-a.
Svojstva windows forme
Svojstvo Name postavlja ime forme odnosno ime odgovarujuće klase. Pomoću propertija AcceptButton se definiše koje će dugme biti kliknuto kada korisnik pritisne taster Enter. CancelButton svojstvo određuje koje će dugme biti pritisnuto kad korisnik pritisne taster Esc. ControlBox svojstvo određuje da li će forma sadržati dugmad za minimizaciju, maksimizaciju i zatvaranje prozora. Text svojstvo forme definiše tekst koji će biti prikazan na naslovnoj liniji forme.
Događaji i metode forme (životni ciklus forme)
U nastavku teksta su prikazani događaji i metode forme redosledom koji odgovara njihovom pojavljivanju pri prikazivanju forme.
Opis događaja forme - I
Load događaj se koristi da bi se izvršile akcije pre nego što forma postane vidljiva. Activated događaj se okida kada se forma aktivira u kodu ili od strane korisnika. Okida se npr. kada forma dobije fokus od neke druge forme. Ovaj događaj se okida pre događaja GotFocus. Kada forma predaje fokus drugoj formi generiše se događaj Deactivate.
Opis događaja forme - II
Closing događaj se trigeruje kada forma dobije zahtev da se zatvori. Ukoliko postoji potreba da forma i dalje bude otvorena ovaj događaj se može poništiti. Closed događaj se trigeruje kada je forma zatvorena ali pre događaja Dispose. Dispose metod se automatski poziva za glavnu formu aplikacije. Metoda Hide() sakriva formu sa ekrana ali ona i dalje postoji u memoriji.
Modalne i nemodalne forme
Metoda ShowDialog() kreira modalnu formu tj. kada se ona prikaže korisnik će morati da je zatvori da bi mogao da pređe na neku drugu formu. U jednom trenutku može biti otvoren samo jedan modalni prozor. Ako se za prikazivanje forme odabere metoda Show() tada se kreira nemodalna forma. Nemodalna forma ne mora biti zatvorena da bi se prešlo na neku drugu formu.
Kreiranje modalne i nemodalne forme
U nastavku je prikazan način kreiranja modalne forme. Unutar event handlera za klik na dugme unutar prve forme označene sa Form1 potrebno je kreirati instancu klase Form2. Najpre se poziva konstruktor klase Form2 pri čemu se kreira objekat forme f2. Metoda f2.ShowDialog() kreira ovu formu kao modalnu. Da bi se prešlo na neku drugu formu mora se najpre zatvoriti instanca f2. Ako se objekat f2 deklariše lokalno tada mu se ne može pristupiti iz drugih metoda u formi Form1. Ukoliko se to želi onda se forma f2 mora deklarisati kao atribut forme Form1 kao što je to urađeno u nastavku. Ako se umesto metode ShowDialog pozove metoda Show onda se kreira nemodalna forma. Moguće je imati nekoliko nemodalnih instanci forme i forma se ne mora zatvoriti da bi se prešlo na neku drugu formu.
private void buttonForma2_Click(object sender, System.EventArgs e)
{
Form2 f2 = new Form2(); // kreiranje instance klase Form2
f2.ShowDialog(); // prikazivamje forme kao modalne
}
Prikazivanje poruka korišćenjem MessageBox-ova
MessageBox ili prozor sa porukom je mali windows prozor koji služi za prikaz obaveštenja, informacija i upozorenja korisniku. Klasa MessageBox ima metodu Show koja ima četiri ulazna parametra koji predstavljaju tekst poruke korisniku (ispisuje se u oblasti oko sredine prozora), naslovnu liniju prozora poruke, dugmad koja će biti prikazana korisniku (npr. OK, Cancel itd.) kao i ikonicu koja će biti prikazana na prozoru. Specifikacija dugmadi koja će se pojaviti u MessageBox-u vrši se korišćenjem enumeracije MessageBoxButtons a specifikacija ikonice vrši se korišćenjem enumeracije MessageBoxIcon. Ukoliko se pri pozivanju metode Show prosledi sam jedan parametar na MessageBox-u će biti prikazan samo tekst poruke i dugme OK za potvrdu.
DialogRezult property
Ovo svojstvo se koristi za određivanje akcije korisnika u MessageBox-u. Npr. ako se prikaže MessageBox koji sadrži OK i Cancel dugmad treba odrediti šta je korisnik kliknuo. Ako je vraćena vrednost DialogResult.OK korisnik je kliknuo dugme OK. Ako je vraćena vrednost DialogResult.Cancel korisnik je kliknuo dugme Cancel. Pomoću property-ja DialogResult može se postaviti odgovarajuća vrednost enumeracije DialogResult za dugme, tj. može se neko dugme proglasiti za dugme OK ili Cancel. Metode klase Form : Show() i ShowDialog() vraćaju vrednost tipa DialogResult tj. neku od vrednosti ove enumeracije.
Standardni windows dijalozi
U nastavku teksta su prikazani standardni windows dijalozi koji su karakteristični za većinu windows aplikacija. OpenFileDialog i SaveFileDialog su dijalozi koji se otvaraju prilikom pokušaja korisnika da otvori fajl odnosno prilikom pokušaja da se fajl sačuva. PrintDialog se otvara pri pokušaju štampanja dokumenta, dok FontDialog nudi mogućnost izbora veličine i vrste fonta sa kojim se radi. ColorDialog se koristi za izbor boje.
Korišćenje standardnih dijaloga
U nastavku je prikazan način korišćenja dva standardna dijaloga. Prozor koji služi za izbor fajla koji će biti otvoren dobija se instanciranjem klase OpenFileDialog. Instanciranje se može izvršiti ručno kao što je to prikazano na slajdu ili prevlačenjem odgovarajuće kontrole na formu. Klasa OpenFileDialog ima svojstvo Filter pomoću koga se mogu postaviti filteri koji ograničavaju koji će se tipovi fajlova pojaviti u dijalogu. U nastavku je prikazan segment korišćenja OpenFileDialog-a. Kada korisnik izabere ime fajla koga želi da otvori prikazuje se MessageBox sa porukom koja predstavlja ime fajla koji se otvara. Slično je sa korišćenjem klase FontDialog. Kada korisnik izabere odgovarajući font i pritisne dugme OK prikazuje se MessageBox sa porukom koji je font izabran.
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Filter = @"C Sharp fajlovi|*.cs;*.sln|Tekstualni fajlovi| *.doc;*.txt|Svi fajlovi|*.*";
//
if(openFileDialog1.ShowDialog() == DialogResult.OK)
{
MessageBox.Show(openFileDialog1.FileName,"Izabrali ste fajl");
}
FontDialog fontDialog1 = new FontDialog();
if(fontDialog1.ShowDialog() == DialogResult.OK)
{
MessageBox.Show("Izabrani font je:" + fontDialog1.Font.Name +
" " + "Velicina fonta je: " + fontDialog1.Font.Size);
}