1 / 95

RP3/predavanje05

RP3/predavanje05. Windows forme (1. dio). 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;

akiko
Download Presentation

RP3/predavanje05

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. RP3/predavanje05 • Windows forme (1. dio) ---------- Računarski praktikum 3 ---------- Maja Starčević

  2. 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 PrvaForma : Form { public static void Main ( string[] args ) { PrvaForma forma=new PrvaForma(); Application.Run(forma); } } Računarski praktikum 3

  3. Windows forme csc /out:C:\test\PrvaForma.exe C:\test\PrvaForma.cs Konzolna aplikacija Računarski praktikum 3

  4. Windows forme csc /t:winexe /out:C:\test\PrvaForma.exe C:\test\PrvaForma.cs Windows aplikacija Računarski praktikum 3

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

  6. Application Klasa Application sadrži metodu Run( ) kojaprikazuje 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. Računarski praktikum 3

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

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

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

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

  11. Windows aplikacija Program.cs using System; using System.Collections.Generic; using System.Windows.Forms; namespace WindowsApplication1 { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } } Računarski praktikum 3

  12. Windows aplikacija Form1.cs Form1.cs[Design] using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } } } Računarski praktikum 3

  13. Windows aplikacija Form1.Designer.cs namespace WindowsApplication1 { partial class Form1 { private System.ComponentModel.IContainer components = null; protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } Windows Form Designer generated code } } Računarski praktikum 3

  14. 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 InitializeComponent() { this.SuspendLayout(); // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(292, 266); this.ForeColor = System.Drawing.SystemColors.GradientActiveCaption; this.Name = "Form1"; this.Text = "Form1"; this.ResumeLayout(false); } Računarski praktikum 3

  15. EnableVisualStyles Metoda System.Windows.Forms.EnableVisualStyles() 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. MonthCalendar). Application.EnableVisualStyles(); Računarski praktikum 3

  16. 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 SuspendLayout() i ResumeLayout(), uvijek u kombinaciji. Pozivom SuspendLayout() metode novi prikaz kontrole se događa nakon svih izvršenih promjena (do poziva metode ResumeLayout(), preciznije ResumeLayout(false))) – preporučuje se pri dodavanju više kontrola. Računarski praktikum 3

  17. Control Klase koje se koriste u dizajnu (npr. kod Windows formi) implementiraju direktno ili indirektno System.ComponentModel.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) Računarski praktikum 3

  18. Kontrole Object MarshalByRefObject Component Control ScrollableControl ButtonBase Label MonthCalendar .... Panel Button LinkLabel Računarski praktikum 3

  19. Form Control ScrollableControl ContainerControl Form Računarski praktikum 3

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

  21. Standardne kontrole u Base Class biblioteci Računarski praktikum 3

  22. Spremnici Kontrole se po potrebi mogu smjestiti u neki od sljedećih spremnika: • Panel • GroupBox • FlowLayoutPanel • SplitContainer • TabControl • TabelLayoutPanel Računarski praktikum 3

  23. 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 Računarski praktikum 3

  24. Controls Controls je svojstvo iz klase Control. To svojstvo vraća kolekciju ControlCollection 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.HasChildren provjeravamo ima li spremnik kontrole djecu. Računarski praktikum 3

  25. Forme 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 modalse primjenjuje za dijaloške okvire koji prikazuju važne informacije (i klasa MessageBox funkcionira na takav način). Modeless forma dopušta mijenjanje fokusa bez prethodnog zatvaranja. Računarski praktikum 3

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

  27. Forme using System.Windows.Forms; class TriForme { public static void Main() { Form form1 = new Form(); Form form2 = new Form(); Form form3= new Form(); form1.Text = “1. forma - Run"; form2.Text = “2. forma - Show"; form2.Show(); form3.Text=“3. forma - ShowDialog"; form3.ShowDialog(); Application.Run(form1); MessageBox.Show(“Izvršavamo Main do kraja",“"); } } Računarski praktikum 3

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

  29. Forme Zatvorimo formu form1 Main() metoda se izvršava do kraja: Računarski praktikum 3

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

  31. Parent, Child public class Form1 : Form { Button velikiGumb, maliGumb; Label label1; public Form1( ) { this.Size = new Size(400, 300); velikiGumb = new Button( ); maliGumb = new Button( ); velikiGumb.Size = new Size(300, 180); velikiGumb.Location = new Point(10, 10); velikiGumb.BackColor = Color.Bisque; velikiGumb.Text = "Hello!"; maliGumb.Size = new Size(25, 25); maliGumb.Location = new Point(10, 10); maliGumb.BackColor = Color.BurlyWood; Primjer 2: gumb je također tipa Control te može primiti druge kontrole u svoju kolekciju kontrola Računarski praktikum 3

  32. Parent, Child this.Controls.Add(velikiGumb); velikiGumb.Controls.Add(maliGumb); velikiGumb.Controls.Add(maliGumb); // ništa se ne mijenja label1 = new Label(); label1.Location = new Point(10, 120); label1.Size = new Size(280, 50); label1.Parent = velikiGumb; foreach (Control control in Controls) label1.Text += (control.ToString()+"\n"); label1.Text += (velikiGumb.Parent == this) + " "; label1.Text += (maliGumb.Parent == velikiGumb) + " "; label1.Text += (maliGumb.Parent == this); } } Računarski praktikum 3

  33. 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 Računarski praktikum 3

  34. Rub forme Sve mogućnosti nalaze se u System.Windows.Forms.FormBorderStyle enumeraciji (default je Sizable): Računarski praktikum 3

  35. Rub forme Tool window – ne prikazuje se u prozoru koji se dobiva s ALT+TAB ni na Taskbar-u (ali uz dodatnu naredbu forma.ShowInTaskbar=false;) Računarski praktikum 3

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

  37. 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. AutoScaleDimensions predstavlja DPI ili font postavke za ekran za koji je kontrola kreirana. (Windows Forms Designer postavlja vrijednosti za ekran koji se trenutno koristi). Računarski praktikum 3

  38. Svojstva forme (kontrole) U trenutku izvršavanja, provjerava se je li AutoScaleDimensions jednak CurrentAutoScaleDimensions. Ako nije, poziva se metoda PerformAutoScale() koja skalira kontrolu i svaku kontrolu dijete te se AutoScaleDimensions ažurira. Računarski praktikum 3

  39. Pozicija forme FormStartPosition enumeracija: CenterScreen - Forma je centrirana u odnosu na zaslon. Manual - Pozicija forme određena je s Locationsvojstvom. WindowsDefaultBounds - Položaj i veličina forme je Windows default. WindowsDefaultLocation - Forma je pozicionirana prema Windows default postavkama i ima dimenzije određene s Form.Size.  this.StartPosition=FormStartPosition.WindowsDefaultLocation; Računarski praktikum 3

  40. FormWindowState EnumeracijaFormWindowState: Maximized Minimized Normal --- > default this.WindowState=FormWindowState.Minimized; Računarski praktikum 3

  41. 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 Računarski praktikum 3

  42. 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 SetBounds ( 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. Računarski praktikum 3

  43. 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.MinimumSize, Form.MaximumSize. Računarski praktikum 3

  44. 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.SizeChanged += new EventHandler(this._SizeChanged); //unutar konstruktora forme …….. private void _SizeChanged(object sender, EventArgs e) { button.Location = new Point(this.Width / 2 - this.button.Width / 2, this.Height – 70); } Računarski praktikum 3

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

  46. Dock HScrollBar hScrollBar1 = new HScrollBar(); hScrollBar1.Dock = DockStyle.Top; this.Controls.Add(hScrollBar1); Pri razvlačenju prozora, hScrollBar1uvijek ispunjava cijeli gornji dio prozora (visina mu se ne mijenja). hScrollBar1.Dock = DockStyle.Fill; U ovom primjeru hScrollBar1uvijek ispunjava cijeli prozor. Računarski praktikum 3

  47. 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: AnchorStyles.None AnchorStyles.Left AnchorStyles.Right AnchorStyles.Top AnchorStyles.Bottom Kontrola se pomiče za polovinu veličine za koju se povećao prozor (u svakom od smjerova razvlačenja prozora) Računarski praktikum 3

  48. Anchor button1.Anchor = (AnchorStyles.Bottom | AnchorStyles.Right); Računarski praktikum 3

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

  50. Primjer1: Label using System.Windows.Forms; class ProbaForm : Form { private Label label1; private Label label2; public ProbaForm() { InitializeComponent(); } public static void Main() { Application.Run(new ProbaForm()); } Računarski praktikum 3

More Related