RP 3predavanje 05 q Windows forme 1 dio

  • Slides: 95
Download presentation
RP 3/predavanje 05 q Windows forme (1. dio) 25/05/2021 ----- Računarski praktikum 3 -----Maja

RP 3/predavanje 05 q Windows forme (1. dio) 25/05/2021 ----- Računarski praktikum 3 -----Maja Starčević 1

Windows forme Windows prozor se generira pomoću klase Form koja se nalazi u prostoru

Windows forme Windows prozor se generira pomoću klase Form koja se nalazi u prostoru System. Windows. Forms (klase iz tog prostora su u asembliju System. Windows. Forms. dll). Primjer jednostavne forme: using System. Windows. Forms; public class Prva. Forma : Form { public static void Main ( string[] args ) { Prva. Forma forma=new Prva. Forma(); Application. Run( forma ); } } 25/05/2021 Računarski praktikum 3 2

Windows forme csc /out: C: testPrva. Forma. exe C: testPrva. Forma. cs Konzolna aplikacija

Windows forme csc /out: C: testPrva. Forma. exe C: testPrva. Forma. cs Konzolna aplikacija 25/05/2021 Računarski praktikum 3 3

Windows forme csc /t: winexe /out: C: testPrva. Forma. exe C: testPrva. Forma. cs

Windows forme csc /t: winexe /out: C: testPrva. Forma. exe C: testPrva. Forma. cs Windows aplikacija 25/05/2021 Računarski praktikum 3 4

Application public sealed class Application { … } Klasa Application (u System. Windows. Forms)

Application public sealed class Application { … } Klasa Application (u System. Windows. Forms) sadrži statičke metode i svojstva za upravljanje aplikacijom: q metode za pokretanje i zaustavljanje aplikacije q metode za obrađivanje Windows poruka q svojstva za dobivanje informacija o aplikaciji 25/05/2021 Računarski praktikum 3 5

Application Klasa Application sadrži metodu Run( ) koja prikazuje formu i stvara petlju u

Application Klasa Application sadrži metodu Run( ) koja prikazuje formu i stvara petlju u koju ulazi program. Petlja obrađuje poruke koje je stvorila aplikacija, druge aplikacije koje se izvršavaju ili operativni sustav. Neke poruke se tretiraju kao događaji, od kojih neki mogu prekinuti petlju. 25/05/2021 Računarski praktikum 3 6

Application. Run() Prikaz forme Početak Windows petlje Ne Događaj? Da Objavljivanje događaja 25/05/2021 Računarski

Application. Run() Prikaz forme Početak Windows petlje Ne Događaj? Da Objavljivanje događaja 25/05/2021 Računarski praktikum 3 7

Forme using System. Windows. Forms; class Program { static void Main(string[] args) { Form

Forme using System. Windows. Forms; class Program { static void Main(string[] args) { Form form = new Form(); form. Show(); } } // pokazuje “kratko” formu form 25/05/2021 Računarski praktikum 3 8

Forme using System. Windows. Forms; using System. Threading; class Program { static void Main(string[]

Forme using System. Windows. Forms; using System. Threading; class Program { static void Main(string[] args) { Form form = new Form(); form. Show(); Thread. Sleep(5000); } } // pokazuje formu form zadano vrijeme 25/05/2021 Računarski praktikum 3 9

Windows aplikacija Ove reference su direktno uključene kod Windows aplikacije Dio klase Form 1

Windows aplikacija Ove reference su direktno uključene kod Windows aplikacije Dio klase Form 1 (sadrži metode za obrađivanje događaja i ostali ručno pisan kod) Drugi dio klase Form 1, sadrži implementaciju konstruktora (od strane Windows Designer-a) i metode Dispose() Sadrži klasu s Main() metodom 25/05/2021 Računarski praktikum 3 10

Windows aplikacija Program. cs using System; using System. Collections. Generic; using System. Windows. Forms;

Windows aplikacija Program. cs using System; using System. Collections. Generic; using System. Windows. Forms; namespace Windows. Application 1 { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application. Enable. Visual. Styles(); Application. Set. Compatible. Text. Rendering. Default(false); Application. Run(new Form 1()); } } } 25/05/2021 Računarski praktikum 3 11

Windows aplikacija Form 1. cs[Design] using System; using System. Collections. Generic; using System. Component.

Windows aplikacija Form 1. cs[Design] using System; using System. Collections. Generic; using System. Component. Model; using System. Data; using System. Drawing; using System. Text; using System. Windows. Forms; namespace Windows. Application 1 { public partial class Form 1 : Form { public Form 1() { Initialize. Component(); } } } 25/05/2021 Računarski praktikum 3 12

Windows aplikacija Form 1. Designer. cs namespace Windows. Application 1 { partial class Form

Windows aplikacija Form 1. Designer. cs namespace Windows. Application 1 { partial class Form 1 { private System. Component. Model. IContainer components = null; protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components. Dispose(); } base. Dispose(disposing); } Windows Form Designer generated code } } 25/05/2021 Računarski praktikum 3 13

Windows aplikacija Windows Form Designer generated code : /// <summary> /// Required method for

Windows aplikacija Windows Form Designer generated code : /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void Initialize. Component() { this. Suspend. Layout(); // // Form 1 // this. Auto. Scale. Dimensions = new System. Drawing. Size. F(6 F, 13 F); this. Auto. Scale. Mode = System. Windows. Forms. Auto. Scale. Mode. Font; this. Client. Size = new System. Drawing. Size(292, 266); this. Fore. Color = System. Drawing. System. Colors. Gradient. Active. Caption; this. Name = "Form 1"; this. Text = "Form 1"; this. Resume. Layout(false); } 25/05/2021 Računarski praktikum 3 14

Enable. Visual. Styles Metoda System. Windows. Forms. Enable. Visual. Styles() omogućuje primjenu vizualnih stilova

Enable. Visual. Styles Metoda System. Windows. Forms. Enable. Visual. Styles() omogućuje primjenu vizualnih stilova (ovisnih o operacijskim sustavima). Neke kontrole izgledaju uvijek isto. Ako se omoguće vizualni stilovi, neke se kontrole neće prikazati uvijek korektno (npr. Month. Calendar). Application. Enable. Visual. Styles(); 25/05/2021 Računarski praktikum 3 15

Layout event Događaj Layout zbiva se kad se dodaju ili miču kontrole s kontrole

Layout event Događaj Layout zbiva se kad se dodaju ili miču kontrole s kontrole roditelja i kad se događaju bilo kakve promjene koje utječu na prikaz kontrole. Da bi se spriječili višestruki Layout događaji (svako mijenjanje svojstava kontrole, pomicanje i sl. inicira Layout događaj) koriste se metode Suspend. Layout() i Resume. Layout(), uvijek u kombinaciji. Pozivom Suspend. Layout() metode novi prikaz kontrole se događa nakon svih izvršenih promjena (do poziva metode Resume. Layout(), preciznije Resume. Layout(false))) – preporučuje se pri dodavanju više kontrola. 25/05/2021 Računarski praktikum 3 16

Control Klase koje se koriste u dizajnu (npr. kod Windows formi) implementiraju direktno ili

Control Klase koje se koriste u dizajnu (npr. kod Windows formi) implementiraju direktno ili indirektno System. Component. Model. IComponent. Klasa koja se koristi pri dizajnu i to na korisničkom sučelju je kontrola. Kontrola se direktno ili indirektno izvodi iz System. Windows. Forms. Control (ili System. Web. UI. Control kod ASP. NET-a) 25/05/2021 Računarski praktikum 3 17

Kontrole Object Marshal. By. Ref. Object Component Control Scrollable. Control Button. Base Label Month.

Kontrole Object Marshal. By. Ref. Object Component Control Scrollable. Control Button. Base Label Month. Calendar . . Panel 25/05/2021 Button Link. Label Računarski praktikum 3 18

Form Control Scrollable. Control Container. Control Form 25/05/2021 Računarski praktikum 3 19

Form Control Scrollable. Control Container. Control Form 25/05/2021 Računarski praktikum 3 19

System. Windows. Forms Klase iz ovog prostora mogu se podijeliti u nekoliko kategorija: q

System. Windows. Forms Klase iz ovog prostora mogu se podijeliti u nekoliko kategorija: q Forms q Common Controls q User Controls q Menus, Toolbars q Containers q Data q Components q Common Dialog Boxes 25/05/2021 Računarski praktikum 3 20

Standardne kontrole u Base Class biblioteci Button Check. Box Checked. List. Box Combo. Box

Standardne kontrole u Base Class biblioteci Button Check. Box Checked. List. Box Combo. Box Label Link. Label List. Box List. View Masked. Text. Box Month. Calendar Notify. Icon Numeric. Up. Down Picture. Box Progress. Bar Radio. Button Rich. Text. Box Tool. Tip Tree. View Web. Browser Date. Time. Picker 25/05/2021 Računarski praktikum 3 21

Spremnici Kontrole se po potrebi mogu smjestiti u neki od sljedećih spremnika: q Panel

Spremnici Kontrole se po potrebi mogu smjestiti u neki od sljedećih spremnika: q Panel q Group. Box q Flow. Layout. Panel q Split. Container q Tab. Control q Tabel. Layout. Panel 25/05/2021 Računarski praktikum 3 22

Kolekcija Controls Svaki spremnik sadrži svojstvo Controls preko kojeg radimo s kolekcijom kontrola koje

Kolekcija Controls Svaki spremnik sadrži svojstvo Controls preko kojeg radimo s kolekcijom kontrola koje se nalaze u tom spremniku. Panel panel=new Panel(); Button button=new Button(); . . this. Controls. Add(panel); // dodaje panel u kolekciju forme panel. Controls. Add(button); // dodaje gumb u kolekciju panela (gumb postaje vidljiv, ako je uz to svojstvo Visible postavljeno na true) button. Visible=false; // gumb je nevidljiv, ali i dalje na panelu panel. Controls. Remove(button); // mičemo gumb iz panela 25/05/2021 Računarski praktikum 3 23

Controls je svojstvo iz klase Control. To svojstvo vraća kolekciju Control. Collection koja sadrži

Controls je svojstvo iz klase Control. To svojstvo vraća kolekciju Control. Collection koja sadrži sve kontrole u spremniku. Spremnik je kontrola roditelj za svaku od kontrola koje se nalaze u njemu. Kontrolu roditelj možemo namjestiti pomoću svojstva Parent. Pomoću svojstva Control. Has. Children provjeravamo ima li spremnik kontrole djecu. 25/05/2021 Računarski praktikum 3 24

Forme i dijaloški okviri mogu biti tipa modal ili modeless. Modal forme i dijaloški

Forme i dijaloški okviri mogu biti tipa modal ili modeless. Modal forme i dijaloški okviri moraju se zatvoriti ili biti skrivene prije nastavka rada s aplikacijom. Tip modal se primjenjuje za dijaloške okvire koji prikazuju važne informacije (i klasa Message. Box funkcionira na takav način). Modeless forma dopušta mijenjanje fokusa bez prethodnog zatvaranja. 25/05/2021 Računarski praktikum 3 25

Forme Prikazivanje forme u obliku modeless dijaloškog okvira. Form f= new Form(); f. Show();

Forme Prikazivanje forme u obliku modeless dijaloškog okvira. Form f= new Form(); f. Show(); Analogno za modal opciju: Form f= new Form(); f. Show. Dialog(); 25/05/2021 Računarski praktikum 3 26

Forme using System. Windows. Forms; class Tri. Forme { public static void Main() {

Forme using System. Windows. Forms; class Tri. Forme { public static void Main() { Form form 1 = new Form(); Form form 2 = new Form(); Form form 3= new Form(); form 1. Text = “ 1. forma - Run"; form 2. Text = “ 2. forma - Show"; form 2. Show(); form 3. Text=“ 3. forma - Show. Dialog"; form 3. Show. Dialog(); Application. Run(form 1); Message. Box. Show(“Izvršavamo Main do kraja", “ "); } } 25/05/2021 Računarski praktikum 3 27

Forme Fokus je na formi form 3. Treba ju zatvoriti da bi bilo moguće

Forme Fokus je na formi form 3. Treba ju zatvoriti da bi bilo moguće raditi s ostalim formama. jer možemo mijenjati fokus ili 25/05/2021 Računarski praktikum 3 28

Forme Zatvorimo formu form 1 Main() metoda se izvršava do kraja: 25/05/2021 Računarski praktikum

Forme Zatvorimo formu form 1 Main() metoda se izvršava do kraja: 25/05/2021 Računarski praktikum 3 29

Parent, Child Primjer 1: public class Form 1 : Form { public Form 1()

Parent, Child Primjer 1: public class Form 1 : Form { public Form 1() { Button button = new Button(); button. Location = new Point(0, 50); // button. Parent = this; // this. Controls. Add(button); Label label = new Label(); label. Text = this. Has. Children. To. String(); Controls. Add(label); U labeli se ispisuje False ako ne uključimo nijedan od komentara. } } 25/05/2021 Računarski praktikum 3 30

Parent, Child Primjer 2: gumb je također tipa Control te može primiti druge kontrole

Parent, Child Primjer 2: gumb je također tipa Control te može primiti druge kontrole u svoju kolekciju kontrola 25/05/2021 public class Form 1 : Form { Button veliki. Gumb, mali. Gumb; Label label 1; public Form 1( ) { this. Size = new Size(400, 300); veliki. Gumb = new Button( ); mali. Gumb = new Button( ); veliki. Gumb. Size = new Size(300, 180); veliki. Gumb. Location = new Point(10, 10); veliki. Gumb. Back. Color = Color. Bisque; veliki. Gumb. Text = "Hello!"; mali. Gumb. Size = new Size(25, 25); mali. Gumb. Location = new Point(10, 10); mali. Gumb. Back. Color = Color. Burly. Wood; Računarski praktikum 3 31

Parent, Child this. Controls. Add(veliki. Gumb); veliki. Gumb. Controls. Add(mali. Gumb); // ništa se

Parent, Child this. Controls. Add(veliki. Gumb); veliki. Gumb. Controls. Add(mali. Gumb); // ništa se ne mijenja label 1 = new Label(); label 1. Location = new Point(10, 120); label 1. Size = new Size(280, 50); label 1. Parent = veliki. Gumb; foreach (Control control in Controls) label 1. Text += (control. To. String()+"n"); label 1. Text += (veliki. Gumb. Parent == this) + " "; label 1. Text += (mali. Gumb. Parent == veliki. Gumb) + " "; label 1. Text += (mali. Gumb. Parent == this); } } 25/05/2021 Računarski praktikum 3 32

System. Drawing Color – predstavlja ARGB boju Font – definira format teksta Graphics –

System. Drawing Color – predstavlja ARGB boju Font – definira format teksta Graphics – enkapsulira GDI+ plohu za crtanje Icon – predstavlja Windows ikonu (malu Bitmap sliku) Point – struktura koja predstavlja uređeni par cjelobrojnih koordinata Size – struktura koja predstavlja uređeni par cijelih brojeva (širina i visina) Image, Bitmap – klase za rad sa slikama 25/05/2021 Računarski praktikum 3 33

Rub forme Sve mogućnosti nalaze se u System. Windows. Form. Border. Style enumeraciji (default

Rub forme Sve mogućnosti nalaze se u System. Windows. Form. Border. Style enumeraciji (default je Sizable): 25/05/2021 Fixed 3 D Rub je 3 D i fiksiran Fixed. Dialog Rub je fiksiran, s podebljanom linijom. Fixed. Single Rub je fiksiran, s tanjom linijom. Računarski praktikum 3 34

Rub forme Fixed. Tool. Window Rub je fiksiran, tipa tool window. None Forma nema

Rub forme Fixed. Tool. Window Rub je fiksiran, tipa tool window. None Forma nema rub. Sizable Veličina forme se može mijenjati. Sizable. Tool. Window Rub se može mijenjati, tipa je tool window. Tool window – ne prikazuje se u prozoru koji se dobiva s ALT+TAB ni na Taskbar-u (ali uz dodatnu naredbu forma. Show. In. Taskbar=false; ) 25/05/2021 Računarski praktikum 3 35

Svojstva forme (kontrole) Size – uređeni par koji predstavlja širinu i visinu forme Client.

Svojstva forme (kontrole) Size – uređeni par koji predstavlja širinu i visinu forme Client. Size – predstavlja širinu i visinu forme bez okvira, scroll bar-a, trake s naslovom i izbornika. Auto. Scale. Mode – način samoskaliranja forme Auto. Scale. Mode. Font Auto. Scale. Mode. DPI Auto. Scale. Mode. None ---- > default 25/05/2021 Računarski praktikum 3 36

Svojstva forme (kontrole) Samoskaliranje po fontu radi se kad nije bitna apsolutna veličina forme,

Svojstva forme (kontrole) Samoskaliranje po fontu radi se kad nije bitna apsolutna veličina forme, već je veličina forme (kontrola) određena veličinom fonta u operacijskom sustavu. Skaliranje po DPI se radi kad se želi postići da forma zauzima određeni postotak površine zaslona. Auto. Scale. Dimensions predstavlja DPI ili font postavke za ekran za koji je kontrola kreirana. (Windows Forms Designer postavlja vrijednosti za ekran koji se trenutno koristi). 25/05/2021 Računarski praktikum 3 37

Svojstva forme (kontrole) U trenutku izvršavanja, provjerava se je li Auto. Scale. Dimensions jednak

Svojstva forme (kontrole) U trenutku izvršavanja, provjerava se je li Auto. Scale. Dimensions jednak Current. Auto. Scale. Dimensions. Ako nije, poziva se metoda Perform. Auto. Scale() koja skalira kontrolu i svaku kontrolu dijete te se Auto. Scale. Dimensions ažurira. 25/05/2021 Računarski praktikum 3 38

Pozicija forme Form. Start. Position enumeracija: Center. Screen - Forma je centrirana u odnosu

Pozicija forme Form. Start. Position enumeracija: Center. Screen - Forma je centrirana u odnosu na zaslon. Manual - Pozicija forme određena je s Location svojstvom. Windows. Default. Bounds - Položaj i veličina forme je Windows default. Windows. Default. Location - Forma je pozicionirana prema Windows default postavkama i ima dimenzije određene s Form. Size. this. Start. Position=Form. Start. Position. Windows. Default. Location; 25/05/2021 Računarski praktikum 3 39

Form. Window. State Enumeracija Form. Window. State: Maximized Minimized Normal --- > default this.

Form. Window. State Enumeracija Form. Window. State: Maximized Minimized Normal --- > default this. Window. State=Form. Window. State. Minimized; 25/05/2021 Računarski praktikum 3 40

Položaj kontrole Location – svojstvo kontrole pomoću kojeg se namješta točka (Point objekt koja

Položaj kontrole Location – svojstvo kontrole pomoću kojeg se namješta točka (Point objekt koja predstavlja gornji lijevi rub kontrole. Koordinate te točke se računaju u odnosu prema gornjem lijevom rubu spremnika koji sadrži kontrolu. = Location. Y = Location. X 25/05/2021 Računarski praktikum 3 41

Location Control. Left – udaljenost od lijevog ruba kontrole do lijevog ruba (klijent) površine

Location Control. Left – udaljenost od lijevog ruba kontrole do lijevog ruba (klijent) površine spremnika u kojem se nalazi. Jednaka je svojstvu Location. X za kontrolu. Promjene na Width i Left svojstvu utječu na Right svojstvo. Control. Right=Control. Left+Control. Width – read-only svojstvo (mijenja se pomoću Left i Width) ili npr. preko metode: public void Set. Bounds ( int x, int y, int width, int height ) – postavlja Location i Size svojstvo kontrole. Location. X i Location. Y su također read-only svojstva. 25/05/2021 Računarski praktikum 3 42

Location Analogno je Control. Top (udaljenost gornjeg ruba kontrole do gornjeg ruba klijent dijela

Location Analogno je Control. Top (udaljenost gornjeg ruba kontrole do gornjeg ruba klijent dijela spremnika) jednaka Y svojstvu. Control. Bottom je jednak sumi Control. Top i Control. Height. Ako forma može mijenjati veličinu, često je preporučljivo postaviti i svojstva Form. Minimum. Size, Form. Maximum. Size. 25/05/2021 Računarski praktikum 3 43

Položaj kontrole Ako forma može mijenjati veličinu, potrebno je više pažnje posvetiti rasporedu elemenata.

Položaj kontrole Ako forma može mijenjati veličinu, potrebno je više pažnje posvetiti rasporedu elemenata. Primjer: kontrola Button se uvijek nalazi na sredini, jednako udaljena od donjeg ruba forme. this. Size = new Size(200, 200); button. Size = new Size(50, 30); this. Size. Changed += new Event. Handler(this. _Size. Changed); //unutar konstruktora forme ……. . private void _Size. Changed(object sender, Event. Args e) { button. Location = new Point(this. Width / 2 - this. button. Width / 2, this. Height – 70); } 25/05/2021 Računarski praktikum 3 44

Dock Postavljanjem svojstva Dock, kontrola se smješta uz odabrani rub roditelj kontrole i automatski

Dock Postavljanjem svojstva Dock, kontrola se smješta uz odabrani rub roditelj kontrole i automatski mijenja veličinu zajedno s roditelj kontrolom. Moguće vrijednosti za Dock. Style su: Dock. Style. None Dock. Style. Left Dock. Style. Right Dock. Style. Top Dock. Style. Bottom Dock. Style. Fill 25/05/2021 Računarski praktikum 3 45

Dock HScroll. Bar h. Scroll. Bar 1 = new HScroll. Bar(); h. Scroll. Bar

Dock HScroll. Bar h. Scroll. Bar 1 = new HScroll. Bar(); h. Scroll. Bar 1. Dock = Dock. Style. Top; this. Controls. Add(h. Scroll. Bar 1); Pri razvlačenju prozora, h. Scroll. Bar 1 uvijek ispunjava cijeli gornji dio prozora (visina mu se ne mijenja). h. Scroll. Bar 1. Dock = Dock. Style. Fill; U ovom primjeru h. Scroll. Bar 1 uvijek ispunjava cijeli prozor. 25/05/2021 Računarski praktikum 3 46

Anchor Pomoću svojstva Anchor kontrola se može “usidriti” za jedan ili više rubova prozora

Anchor Pomoću svojstva Anchor kontrola se može “usidriti” za jedan ili više rubova prozora koji ju sadrži. Npr. ako se usidri na desni rub prozora, udaljenost desnog ruba kontrole i desnog ruba prozora je uvijek konstanta (kad korisnik mijenja veličinu prozora). Ako se usidri za više od dva ruba, onda joj se pri razvlačenju prozora mijenja veličina. Moguće vrijednosti za svojstvo Anchor su: Anchor. Styles. None Kontrola se pomiče za polovinu Anchor. Styles. Left veličine za koju se povećao prozor (u svakom od smjerova razvlačenja Anchor. Styles. Right prozora) Anchor. Styles. Top Anchor. Styles. Bottom 25/05/2021 Računarski praktikum 3 47

Anchor button 1. Anchor = (Anchor. Styles. Bottom | Anchor. Styles. Right); 25/05/2021 Računarski

Anchor button 1. Anchor = (Anchor. Styles. Bottom | Anchor. Styles. Right); 25/05/2021 Računarski praktikum 3 48

Flags Napomena: Ako kombiniramo članove enumeracije, koristimo atribut [Flags]. Primjer: [Flags] public enum Border

Flags Napomena: Ako kombiniramo članove enumeracije, koristimo atribut [Flags]. Primjer: [Flags] public enum Border { Left=1, Right=2, Bottom=4, Top=8, Top. Left=Top | Left, Right. Bottom =Right | Bottom, All=Top. Left | Right. Bottom } 25/05/2021 Računarski praktikum 3 49

Primjer 1: Label using System. Windows. Forms; class Proba. Form : Form { private

Primjer 1: Label using System. Windows. Forms; class Proba. Form : Form { private Label label 1; private Label label 2; public Proba. Form() { Initialize. Component(); } public static void Main() { Application. Run(new Proba. Form()); } 25/05/2021 Računarski praktikum 3 50

Primjer 1: Label private void Initialize. Component() { label 1 = new Label(); label

Primjer 1: Label private void Initialize. Component() { label 1 = new Label(); label 2 = new Label(); this. Size=new System. Drawing. Size(180, 130); label 1. Size= new System. Drawing. Size(110, 20); label 1. Location= new System. Drawing. Point(10, 10); label 1. Fore. Color=System. Drawing. Color. Ghost. White; label 1. Back. Color=System. Drawing. Color. Dark. Orange; label 1. Text. Align=System. Drawing. Content. Alignment. Middle. Center; label 1. Text="Širina prozora je"+this. Width; label 2. Size= new System. Drawing. Size(110, 20); label 2. Location= new System. Drawing. Point(10, 40); label 2. Text="Visina prozora je"+this. Height; this. Controls. Add(label 1); this. Controls. Add(label 2); } } 25/05/2021 Računarski praktikum 3 51

Primjer 2: Label label 1 =new Label(); Label label 2=new Label(); Label label 3=new

Primjer 2: Label label 1 =new Label(); Label label 2=new Label(); Label label 3=new Label(); Label label 4=new Label(); label 1. Auto. Size=true; label 2. Auto. Size=true; label 3. Auto. Size=true; label 4. Size=new Size (89, 10); label 4. Back. Color=Color. Blue; label 1. Location=new Point (10, 10); label 2. Location=new Point (10, 30); label 3. Location=new Point (10, 50); label 4. Location=new Point (10, 70); label 2. Text=this. label 1. Width+" "+this. label 1. Preferred. Width; label 1. Text = this. Width + " " + this. Height+" "+this. Client. Size. Width+" "+this. Client. Size. Height; label 3. Text=this. label 1. Width+" "+this. label 1. Preferred. Width; 25/05/2021 Računarski praktikum 3 52

Kreiranje kontrole Button Primjer: Dodavanje kontrole tipa Button i prijava za događaj. 25/05/2021 Računarski

Kreiranje kontrole Button Primjer: Dodavanje kontrole tipa Button i prijava za događaj. 25/05/2021 Računarski praktikum 3 53

Kreiranje kontrole Button Form 1. Designer. cs namespace Windows. Application 4 { partial class

Kreiranje kontrole Button Form 1. Designer. cs namespace Windows. Application 4 { partial class Form 1 { private System. Component. Model. IContainer components = null; protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components. Dispose(); } base. Dispose(disposing); } Windows Form Designer generated code private System. Windows. Forms. Button button 1; } } 25/05/2021 Računarski praktikum 3 54

Kreiranje kontrole Button Windows Form Designer generated code : private void Initialize. Component() {

Kreiranje kontrole Button Windows Form Designer generated code : private void Initialize. Component() { this. button 1 = new System. Windows. Forms. Button(); this. Suspend. Layout(); this. button 1. Back. Color = System. Drawing. System. Colors. Inactive. Caption. Text; this. button 1. Font = new System. Drawing. Font("Microsoft Sans Serif", 9. 75 F, System. Drawing. Font. Style. Bold, System. Drawing. Graphics. Unit. Point, ((byte)(0))); this. button 1. Fore. Color = System. Drawing. System. Colors. Gradient. Active. Caption; this. button 1. Location = new System. Drawing. Point(12, 128); this. button 1. Name = "button 1"; this. button 1. Size = new System. Drawing. Size(181, 33); this. button 1. Tab. Index = 0; this. button 1. Text = "Oboji prozor u zeleno. "; this. button 1. Use. Visual. Style. Back. Color = false; + svojstva forme (ostaju ista) } 25/05/2021 Računarski praktikum 3 55

Obrada događaja Properties 25/05/2021 Events Računarski praktikum 3 56

Obrada događaja Properties 25/05/2021 Events Računarski praktikum 3 56

Obrada događaja Form 1. cs namespace Windows. Application 1 { public partial class Form

Obrada događaja Form 1. cs namespace Windows. Application 1 { public partial class Form 1 : Form { public Form 1() { Initialize. Component(); } private void button 1_Click(object sender, Event. Args e) { this. Back. Color = Color. Light. Green; } } } 25/05/2021 Računarski praktikum 3 57

Obrada događaja Windows Form Designer generated code : private void Initialize. Component() { this.

Obrada događaja Windows Form Designer generated code : private void Initialize. Component() { this. button 1 = new System. Windows. Forms. Button(); this. Suspend. Layout(); this. button 1. Back. Color = System. Drawing. System. Colors. Inactive. Caption. Text; this. button 1. Font = new System. Drawing. Font("Microsoft Sans Serif", 9. 75 F, System. Drawing. Font. Style. Bold, System. Drawing. Graphics. Unit. Point, ((byte)(0))); this. button 1. Fore. Color = System. Drawing. System. Colors. Gradient. Active. Caption; this. button 1. Location = new System. Drawing. Point(12, 128); this. button 1. Name = "button 1"; this. button 1. Size = new System. Drawing. Size(181, 33); this. button 1. Tab. Index = 0; this. button 1. Text = "Oboji prozor u zeleno. "; this. button 1. Use. Visual. Style. Back. Color = false; this. button 1. Click += new System. Event. Handler(this. button 1_Click); } 25/05/2021 Računarski praktikum 3 58

Obrada događaja Pritiskom na tipku button 1 objavljuje događaj Click za koji je prijavljena

Obrada događaja Pritiskom na tipku button 1 objavljuje događaj Click za koji je prijavljena metoda button 1_Click 25/05/2021 Računarski praktikum 3 59

Obrada događaja Primjer: Pritisak na desnu tipku miša oboji formu u crno. Događaj se

Obrada događaja Primjer: Pritisak na desnu tipku miša oboji formu u crno. Događaj se obrađuje pomoću delegata Mouse. Event. Handler. Mouse. Event. Args sadrži svojstva Button, Clicks, Delta, Location, X, Y. this. Mouse. Down += new Mouse. Event. Handler(_Mouse. Down); private void _Mouse. Down(object sender, Mouse. Event. Args e) { if (e. Button == Mouse. Buttons. Right) { this. Back. Color=Color. Black; } } 25/05/2021 Računarski praktikum 3 60

Zadatak Napravite formu kao na slici. Dodajte kontrole za poništavanje upisa u tekstualna polja

Zadatak Napravite formu kao na slici. Dodajte kontrole za poništavanje upisa u tekstualna polja i izlaz iz aplikacije. 25/05/2021 Računarski praktikum 3 61

Pomicanje forme Sljedeća aplikacija stvara jednu formu. Pritiskom miša na bilo koji dio forme

Pomicanje forme Sljedeća aplikacija stvara jednu formu. Pritiskom miša na bilo koji dio forme (ne samo traku s naslovom) možemo pomicati formu. public class Form 1 : Form { Point mouse. Down. Point; bool dragging; public Form 1() { Initialize. Component(); this. Mouse. Down += _Mouse. Down; this. Mouse. Move += _Mouse. Move; this. Mouse. Up += _Mouse. Up; } 25/05/2021 Računarski praktikum 3 62

Pomicanje forme private void _Mouse. Down(object sender, Mouse. Event. Args e) { dragging=true; mouse.

Pomicanje forme private void _Mouse. Down(object sender, Mouse. Event. Args e) { dragging=true; mouse. Down. Point=new Point(e. X, e. Y); } private void _Mouse. Move(object sender, Mouse. Event. Args e) { if (dragging) this. Location += new Size(e. X - mouse. Down. Point. X, e. Y - mouse. Down. Point. Y); } private void _Mouse. Up(object sender, Mouse. Event. Args e) { dragging = false; } } 25/05/2021 Računarski praktikum 3 63

Zadatak Napravite formu kao na slici. Forma bi se trebala moći pomicati kad pritisnemo

Zadatak Napravite formu kao na slici. Forma bi se trebala moći pomicati kad pritisnemo zadani tekst. Zadatak: proučite što rade Point. To. Screen, Point. To. Client, Point. Offset … metode. 25/05/2021 Računarski praktikum 3 64

Zadaci o Napravite program koji ima jednu formu. Na sredini forme se nalazi gumb.

Zadaci o Napravite program koji ima jednu formu. Na sredini forme se nalazi gumb. Forma i labelu. Pritiskom miša na bilo koji dio forme (pa i na gumb i labelu) u labeli se ispisuju koordinate tog položaja (uvijek u odnosu na gornji lijevi rub forme). o Napravite program koji ima jednu formu i gumb. Omogućite da se gumb nakon pritiska na njega može pomicati po formi. o Napravite formu s gumbom. Ukoliko je miš postavljen iznad gumba pet ili više sekundi, forma bi trebala promijeniti boju nakon što miš pomaknemo izvan granica gumba. 25/05/2021 Računarski praktikum 3 65

Primjer: Esc i Button_Click using System; using System. Windows. Forms; public class Esc. Forma

Primjer: Esc i Button_Click using System; using System. Windows. Forms; public class Esc. Forma : Form { private Button btn. Exit; public Esc. Forma() { Initialize. Component(); } private void Initialize. Component () Tipkom Esc ili Enter te kombinacijom { tipki Alt + X postiže se isti btn. Exit = new Button(); btn. Exit. Text=“E&xit"; efekt kao i pritiskom na btn. Exit this. Cancel. Button = btn. Exit; this. Accept. Button = btn. Exit; btn. Exit. Click +=new Event. Handler(this. _Click); this. Controls. Add(btn. Exit); } 25/05/2021 Računarski praktikum 3 66

Primjer: Esc i Button_Click private void _Click (object sender, Event. Args e) { this.

Primjer: Esc i Button_Click private void _Click (object sender, Event. Args e) { this. Close(); } public static void Main ( string[] args ) { Esc. Forma forma=new Esc. Forma(); Application. Run(forma); } } 25/05/2021 Računarski praktikum 3 67

Windows Dialog Boxes o Color. Dialog o Print. Preview. Dialog o Font. Dialog o

Windows Dialog Boxes o Color. Dialog o Print. Preview. Dialog o Font. Dialog o Open. File. Dialog o Save. File. Dialog o Message. Box 25/05/2021 Računarski praktikum 3 68

Menu Klasa Menu je (apstraktna) bazna klasa za klasu Main. Menu (klasu pomoću koje

Menu Klasa Menu je (apstraktna) bazna klasa za klasu Main. Menu (klasu pomoću koje se kreira izbornik) te za klasu Context. Menu koja predstavlja iskočni izbornik. Menu je također i bazna klasa za klasu Menu. Item čiji objekti predstavljaju stavke i podstavke izbornika (koje se dodaju u kolekciju Menu. Items). 25/05/2021 Računarski praktikum 3 69

Menu 25/05/2021 Računarski praktikum 3 70

Menu 25/05/2021 Računarski praktikum 3 70

Menu public partial class Form 1 : Form { private Main. Menu my. Main.

Menu public partial class Form 1 : Form { private Main. Menu my. Main. Menu; public Form 1() { my. Main. Menu = new Main. Menu(); Menu. Item menuitem. File = my. Main. Menu. Items. Add("&File"); menuitem. File. Menu. Items. Add(new Menu. Item("Colors Dialog", new Event. Handler(this. Menu. Selection))); menuitem. File. Menu. Items. Add(new Menu. Item("Fonts Dialog", new Event. Handler(this. Menu. Selection))); menuitem. File. Menu. Items. Add(new Menu. Item("Print Preview Dialog", new Event. Handler(this. Menu. Selection))); menuitem. File. Menu. Items. Add("-"); menuitem. File. Menu. Items. Add(new Menu. Item("Exit", new Event. Handler(this. Menu. Selection))); Menu. Item menuitem. Tools = my. Main. Menu. Items. Add("&Tools"); menuitem. Tools. Menu. Items. Add(new Menu. Item("Tool 1", new Event. Handler(this. Menu. Selection))); this. Menu = my. Main. Menu; } 25/05/2021 Računarski praktikum 3 71

Menu private void Menu. Selection(object sender, Event. Args e) { switch (((Menu. Item)sender). Text)

Menu private void Menu. Selection(object sender, Event. Args e) { switch (((Menu. Item)sender). Text) { case "Exit": Application. Exit(); break; case "Colors Dialog": Color. Dialog my. Color. Dialog = new Color. Dialog(); my. Color. Dialog. Show. Dialog(); break; case "Fonts Dialog": Font. Dialog my. Font. Dialog = new Font. Dialog(); my. Font. Dialog. Show. Dialog(); break; case "Print Preview Dialog": Print. Preview. Dialog my. Print. Dialog = new Print. Preview. Dialog(); my. Print. Dialog. Show. Dialog(); break; default: Message. Box. Show ("Nedostupno"); break; } } } 25/05/2021 Računarski praktikum 3 72

Message. Box 25/05/2021 Računarski praktikum 3 73

Message. Box 25/05/2021 Računarski praktikum 3 73

Menu. Strip je novija klasa za izradu glavnog izbornika. Pruža više mogućnosti. Primjer takvog

Menu. Strip je novija klasa za izradu glavnog izbornika. Pruža više mogućnosti. Primjer takvog izbornika: 25/05/2021 Računarski praktikum 3 74

Menu. Strip Dvostrukim klikom na npr. New, odmah prelazimo na private void new. Tool.

Menu. Strip Dvostrukim klikom na npr. New, odmah prelazimo na private void new. Tool. Strip. Menu. Item_Click(object sender, Event. Args e) { } 25/05/2021 Računarski praktikum 3 75

Message. Box Ne može se stvoriti instanca klase Message. Box. Za prikaz tog prozora

Message. Box Ne može se stvoriti instanca klase Message. Box. Za prikaz tog prozora potrebno je pozvati statičku metodu Message. Box. Show. Neki od mogućih potpisa za metodu: Message. Box. Show(string); Message. Box. Show(string, Message. Box. Buttons); . . . 25/05/2021 Računarski praktikum 3 76

Message. Box Članovi enumeracije Message. Box. Buttons: q Abort. Retry. Ignore q OK q

Message. Box Članovi enumeracije Message. Box. Buttons: q Abort. Retry. Ignore q OK q Ok. Cancel q Retry. Cancel q Yes. No. Cancel 25/05/2021 Računarski praktikum 3 77

Message. Box private List. Box list. Box; . . . . private void Show.

Message. Box private List. Box list. Box; . . . . private void Show. Message. Box() { int count = 0; while (Message. Box. Show("Exit application? ", "", Message. Box. Buttons. Yes. No) == Dialog. Result. No) { count ++; list. Box. Items. Add(count); } } 25/05/2021 Računarski praktikum 3 78

Message. Box 5 × No + Yes 25/05/2021 Računarski praktikum 3 79

Message. Box 5 × No + Yes 25/05/2021 Računarski praktikum 3 79

Radio. Button, Group. Box Kontrole tipa Radio. Button je potrebno grupirati. 25/05/2021 Računarski praktikum

Radio. Button, Group. Box Kontrole tipa Radio. Button je potrebno grupirati. 25/05/2021 Računarski praktikum 3 80

Radio. Button, Group. Box public class Form 1 : Form { private Radio. Button

Radio. Button, Group. Box public class Form 1 : Form { private Radio. Button rb. M; private Radio. Button rb. Z; private Radio. Button rb. Iznad 18; private Radio. Button rb. Ispod 18; private Group. Box gb. Spol; private Group. Box gb. Dob; public Form 1() { 25/05/2021 Računarski praktikum 3 81

Radio. Button, Group. Box this. Size = new Size(400, 350); this. Back. Color =

Radio. Button, Group. Box this. Size = new Size(400, 350); this. Back. Color = Color. Chocolate; this. Fore. Color = Color. White; this. gb. Spol. Text = "Spol"; this. gb. Spol. Fore. Color = Color. White; this. gb. Spol. Size = new Size(100, 130); this. gb. Spol. Location = new Point(40, 40); this. gb. Dob. Text = "Dob"; this. gb. Dob. Fore. Color = Color. White; this. gb. Dob. Size = new Size(150, 130); this. gb. Dob. Location = new Point(190, 40); 25/05/2021 Računarski praktikum 3 82

Radio. Button, Group. Box this. rb. M. Size = new Size(70, 20); this. rb.

Radio. Button, Group. Box this. rb. M. Size = new Size(70, 20); this. rb. M. Location = new Point(20, 20); this. rb. M. Text = "M"; this. rb. Z. Size = new Size(70, 20); this. rb. Z. Location = new Point(20, 70); this. rb. Z. Text = "Ž"; this. rb. Iznad 18. Location = new Point(20, 20); this. rb. Iznad 18. Text = "18 i više"; this. rb. Ispod 18. Location = new Point(20, 70); this. rb. Ispod 18. Text = "Ispod 18"; 25/05/2021 Računarski praktikum 3 83

Radio. Button, Group. Box this. Controls. Add(gb. Spol); this. Controls. Add(gb. Dob); this. gb.

Radio. Button, Group. Box this. Controls. Add(gb. Spol); this. Controls. Add(gb. Dob); this. gb. Spol. Controls. Add(rb. M); this. gb. Spol. Controls. Add(rb. Z); this. gb. Dob. Controls. Add(rb. Iznad 18); this. gb. Dob. Controls. Add(rb. Ispod 18); } } 25/05/2021 Računarski praktikum 3 84

Context. Menu Otpuštanje tipke miša bilo gdje na formi. Lijeva tipka: Desna tipka: 25/05/2021

Context. Menu Otpuštanje tipke miša bilo gdje na formi. Lijeva tipka: Desna tipka: 25/05/2021 Računarski praktikum 3 85

Context. Menu this. Mouse. Up += new Mouse. Event. Handler(_Mouse. Up); void _Mouse. Up(object

Context. Menu this. Mouse. Up += new Mouse. Event. Handler(_Mouse. Up); void _Mouse. Up(object sender, Mouse. Event. Args e) { Menu. Item[] menu. Items = new Menu. Item[]{new Menu. Item("M"), new Menu. Item("Ž")}; Context. Menu cm = new Context. Menu(menu. Items); if (e. Button == Mouse. Buttons. Left) { Point p = new Point(10, 10); cm. Show(this, p); } else { Point p = new Point(150, 150); cm. Show(this, p); } } 25/05/2021 Računarski praktikum 3 86

Context. Menu. Strip je drugi (noviji) tip koji nam služi za izradu iskočnog izbornika.

Context. Menu. Strip je drugi (noviji) tip koji nam služi za izradu iskočnog izbornika. 25/05/2021 Računarski praktikum 3 87

Zadatak Napravite izmjene u prethodnom kodu tako da se pritiskom na lijevu tipku unutar

Zadatak Napravite izmjene u prethodnom kodu tako da se pritiskom na lijevu tipku unutar spremnika Spol pokazuje izbornik za grupu Spol (na mjestu pritiska), a pritiskom na desnu tipku miša analogno za grupu Dob. Dodajte i događaje pomoću kojih će se odabir radiogumba moći vršiti i preko dobivenih izbornika. 25/05/2021 Računarski praktikum 3 88

User. Control Klasa User. Control pruža mogućnost kreiranja vlastitih kontrola (koje će se višestruko

User. Control Klasa User. Control pruža mogućnost kreiranja vlastitih kontrola (koje će se višestruko koristiti). Nova kontrola se dobiva nasljeđivanjem klase User. Control. Često se više klasa tog tipa postavlja u isti imenski prostor te se zajedno kompiliraju u zajedničku biblioteku klasa (. dll). Klasa User. Control nasljeđuje klasu Container. Control (koja nasljeđuje Scrollable. Control), dakle pruža podršku za upravljanje fokusom. Napomena: u Visual Studiu se može napraviti preko Project Add User Control. Nakon kompiliranja pojavljuje se u Toolbox-u. 25/05/2021 Računarski praktikum 3 89

User. Control Jedna kontrola 25/05/2021 Računarski praktikum 3 90

User. Control Jedna kontrola 25/05/2021 Računarski praktikum 3 90

User. Control public class My. User. Control : System. Windows. Forms. User. Control {

User. Control public class My. User. Control : System. Windows. Forms. User. Control { private Label label. Ime; private Label label. Prezime; private Label label. Adresa; private Label label. Datum. Rodjenja; private Text. Box text. Box. Ime; private Text. Box text. Box. Prezime; private Text. Box text. Box. Adresa; private Text. Box text. Box. Datum. Rodjenja; public My. User. Control() { Initialize. Component(); } 25/05/2021 Računarski praktikum 3 91

User. Control public void Initialize. Component() { label. Ime =new Label(); label. Prezime =new

User. Control public void Initialize. Component() { label. Ime =new Label(); label. Prezime =new Label(); label. Adresa =new Label(); label. Datum. Rodjenja =new Label(); text. Box. Ime = new Text. Box(); ; text. Box. Prezime= new Text. Box(); ; text. Box. Adresa = new Text. Box(); text. Box. Datum. Rodjenja= new Text. Box(); label. Ime. Text="Ime"; label. Prezime. Text="Prezime"; label. Adresa. Text="Adresa"; label. Datum. Rodjenja. Text="Datuma rođenja"; 25/05/2021 Računarski praktikum 3 92

User. Control label. Ime. Location=new Point (10, 20); label. Prezime. Location=new Point (10, 50);

User. Control label. Ime. Location=new Point (10, 20); label. Prezime. Location=new Point (10, 50); label. Adresa. Location=new Point (10, 80); label. Datum. Rodjenja. Location=new Point (10, 110); label. Ime. Size=new Size (120, 20); label. Prezime. Size=new Size (120, 20); label. Adresa. Size=new Size (120, 20); label. Datum. Rodjenja. Size=new Size (120, 20); text. Box. Ime. Location=new Point (150, 20); text. Box. Prezime. Location=new Point (150, 50); text. Box. Adresa. Location=new Point (150, 80); text. Box. Datum. Rodjenja. Location=new Point (150, 110); text. Box. Ime. Size=new Size (120, 20); text. Box. Prezime. Size=new Size (120, 20); text. Box. Adresa. Size=new Size (120, 20); text. Box. Datum. Rodjenja. Size=new Size (120, 20); 25/05/2021 Računarski praktikum 3 93

User. Controls. Add. Range(new System. Windows. Forms. Control[ ] { label. Ime, label. Prezime,

User. Controls. Add. Range(new System. Windows. Forms. Control[ ] { label. Ime, label. Prezime, label. Adresa, label. Datum. Rodjenja, text. Box. Ime, text. Box. Prezime, text. Box. Adresa, text. Box. Datum. Rodjenja, }); this. Size = new System. Drawing. Size(400, 150); } 25/05/2021 Računarski praktikum 3 94

User. Control public class My. First. User. Control : Form { public My. First.

User. Control public class My. First. User. Control : Form { public My. First. User. Control() { Initialize. Component(); } private void Initialize. Component() { My. User. Control my. Control 1= new My. User. Control(); this. Controls. Add(my. Control 1); my. Control 1. Location= new Point(20, 20); } public static void Main(string[] args) { Application. Run(new My. First. User. Control()); } } 25/05/2021 Računarski praktikum 3 95