1 / 96

RP3/predavanje11

RP3/predavanje11. Windows forme (2.dio). Kontrole. CheckBox – koristi se za prikaz binarnog stanja objekta, klikom se prebacuje iz označenog u neoznačeno stanje CheckedListBox – ListBox sa stupcem CheckBox kontrola (olakšava odabir više stavki)

Télécharger la présentation

RP3/predavanje11

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/predavanje11 • Windows forme (2.dio) ---------- Računarski praktikum 3 ---------- Maja Starčević

  2. Kontrole CheckBox – koristi se za prikaz binarnog stanja objekta, klikom se prebacuje iz označenog u neoznačeno stanje CheckedListBox – ListBox sa stupcem CheckBox kontrola (olakšava odabir više stavki) ComboBox – padajući izbornik stavki. Sličan je po funkciji kontroli ListBox, samo je kompaktniji. DataGridView – Kontrola koja omogućava povezivanje programa s izvorom podataka Računarski praktikum 3

  3. Kontrole DateTimePicker – kontrola za biranje datuma i vremena DomainUpDown – omogućuje klizanje kroz popis stavki podataka od kojih se samo jedna može istovremeno prikazati LinkLabel – isto kao i kontrola Label, ali sadrži URL za skok na internetsku adresu ListBox – sadrži popis stavki (i kliznu traku ako ih je previše za prikaz) Računarski praktikum 3

  4. Kontrole ListView – sofisticiranija kontrola od ListBox. Omogućuje prikaz u više stupaca, naslove stupaca, promjenu veličine, razvrstavanje popisa MonthCalendar – vizualna kalendarska kontrola (dosta sličnosti s kontrolom DateTimePicker) NumericUpDown – slično kao DomainUpDown samo što sadrži samo numeričke stavke PictureBox – kontrola za prikaz slike Računarski praktikum 3

  5. Kontrole ProgressBar – kontrola za prikaz statusa operacije u tijeku. Sadrži grafički indikator za prikaz postotka napredovanja operacije PropertyGrid – koristi se za postavljenje i prikaz popisa svojstava povezanih s određenom komponentom RichTextBox – naprednija verzija TextBox kontrole koja pruža bolji nadzor nad tekstom Računarski praktikum 3

  6. Kontrole ToolTip – kontrola koja omogućuje stvaranje poruke koja se pojavljuje kad se kursor ostavi nekoliko trenutaka iznad kontrole TreeView – kontrola koja prikazuje stavke na hijerarhijski način WebBrowser – kontrola koja omogućuju pregled Web stranica unutar forme. Računarski praktikum 3

  7. NumericUpDown numericUpDown1.Value = 1; numericUpDown1.Minimum = -5; numericUpDown1.Maximum = 5; numericUpDown1.DecimalPlaces = 1; numericUpDown1.Increment=0.1M; Ako se ne postave ove vrijednosti, minimum je 0, maksimum 100, početna vrijednost je nula i ne prikazuju se decimalna mjesta. Računarski praktikum 3

  8. DomainUpDown DomainUpDown d = new DomainUpDown(); d.Items.Add("jabuka"); d.Items.Add("marelica"); d.Items.Add("ananas"); d.Items.Insert(1, "mango"); d.Sorted = true; d.Wrap=true; Kad dođemo do kraja popisa, vraćamo se na početak Računarski praktikum 3

  9. ToolTip button = new Button(); toolTip = new ToolTip(); button.Location = new Point(50, 50); button.AutoSize = true; button.Text = "Dođi iznad gumba i pričekaj"; button.BackColor = Color.White; toolTip.ToolTipTitle = "Uputa:"; toolTip.IsBalloon = false; toolTip.ShowAlways = true; toolTip.SetToolTip(button, "Pritisni gumb."); Controls.Add(button); Računarski praktikum 3

  10. MonthCalendar Uz Application.EnableVisualStyles(); Računarski praktikum 3

  11. MonthCalendar monthCalendar1.ShowToday = false; monthCalendar1.ShowTodayCircle = false; Računarski praktikum 3

  12. MonthCalendar label = new Label(); monthCalendar= new MonthCalendar(); Controls.Add(monthCalendar); Controls.Add(label); monthCalendar.MaxSelectionCount = 14; monthCalendar.DateSelected += monthCalendar_DateSelected; ……………… void monthCalendar_DateSelected(object sender, DateRangeEventArgs e) { label.Text = "Izabran je period od " + monthCalendar.SelectionStart.ToShortDateString() + " do " + monthCalendar.SelectionEnd.ToShortDateString(); } Računarski praktikum 3

  13. MonthCalendar Računarski praktikum 3

  14. DateTimePicker public class Form1 : Form { DateTimePickerdateTimePicker; Labellabel; public Form1() { InitializeComponent(); dateTimePicker = new DateTimePicker(); label = new Label(); dateTimePicker.Format = DateTimePickerFormat.Short; dateTimePicker.ShowUpDown = true; dateTimePicker.Format = DateTimePickerFormat.Custom; dateTimePicker.CustomFormat = "dd.MM.yyyy. hh:mm:ss" dateTimePicker.Location = new Point(10, 10); dateTimePicker.Width = 150; label.Location = new Point(200, 10); label.AutoSize = true; Računarski praktikum 3

  15. DateTimePicker dateTimePicker.ValueChanged += new EventHandler(dateTimePicker_ValueChanged); Controls.Add(dateTimePicker); Controls.Add(label); } void dateTimePicker_ValueChanged(object sender, EventArgs e) { IFormatProvider culture1 = new CultureInfo("hr-HR"); IFormatProvider culture2 = new CultureInfo("fr-FR"); string dateTime1 = dateTimePicker.Value.ToString(culture1); string dateTime2 = dateTimePicker.Value.ToString(culture2); label.Text = "hrvatski datum i vrijeme " + dateTime1 + "\n\n" + "francuski datum i vrijeme " + dateTime2; } U prostoru System.Globalization Računarski praktikum 3

  16. DateTimePicker timePicker.ShowUpDown =false; Računarski praktikum 3

  17. ProgressBar, Timer Računarski praktikum 3

  18. ProgressBar, Timer public class Form1 : Form { Timer timer1; ProgressBar progressBar1; ListBox listBox1; int counter; public Form1() { progressBar1 = new ProgressBar(); Label label1 = new Label(); listBox1 = new ListBox(); label1.Location = new Point(20, 20); progressBar1.Minimum = 0; progressBar1.Maximum = 20; Controls.AddRange(new Control[] { progressBar1, listBox1 }); Računarski praktikum 3

  19. ProgressBar, Timer timer1 = new Timer(); timer1.Interval = 5000; timer1.Enabled = true; this.timer1.Tick += new System.EventHandler(this.timer1_Tick); } private void timer1_Tick(object sender, System.EventArgs e) { if (counter >= 10) { timer1.Enabled = false; } else { counter++; progressBar1.Increment(1); listBox1.Items.Add(DateTime.Now.ToString()); } } } Računarski praktikum 3

  20. Zadatak Napravite aplikaciju koja se sastoji od jedne forme s dva panela. U prvom se nalazi ploča 3 × 3 u kojoj su sva polja u početku obojana bijelo. U drugom panelu nalaze se gumb Start, Stop, dva TextBox-a, jedna labela i jedan ProgressBar. Pritiskom na Start, u zadanom vremenskom intervalu se slučajnim odabirom tri polja obojaju u plavo i tako dalje periodički. Cilj igre je pogoditi što više plavih polja. U labeli se zapisuje broj pogođenih plavih polja. Pritiskom na Stop igra se zaustavlja i dobiva se MessageBox da je igra prekinuta. Ako je igra završila u zadanom vremenu, dobiva se MessageBox o broju pogođenih polja. Kontrola ProgressBar pokazuje koliko još ima do isteka igre. Preko TextBox kontrola se može unijeti brzina izmjenjivanja plavih polja i vrijeme trajanja igre. Računarski praktikum 3

  21. TreeView Računarski praktikum 3

  22. TreeView public class Form1 : Form { public Form1() { this.treeView1 = new TreeView(); this.treeView1.Location = new Point(16, 50); this.treeView1.Margin = new Padding(4); this.treeView1.Size = new System.Drawing.Size(286, 313); this.Controls.Add(this.treeView1); this.ClientSize = new System.Drawing.Size(316, 390); this.Margin = new System.Windows.Forms.Padding(4); this.Text = "Form1"; TreeNode parniBrojevi = treeView1.Nodes.Add("Parni Brojevi"); TreeNode neparniBrojevi = treeView1.Nodes.Add("Neparni brojevi"); Računarski praktikum 3

  23. TreeView for (int i = 1; i < 20; i++) { if (i % 2 == 0) { parniBrojevi.Nodes.Add(i.ToString()); } else { neparniBrojevi.Nodes.Add(i.ToString() ); } } } private System.Windows.Forms.TreeView treeView1; } Računarski praktikum 3

  24. WebBrowser Računarski praktikum 3

  25. WebBrowser private void goButton_Click(object sender, EventArgs e) { webBrowser1.Navigate(textURL.Text); } private void homeButton_Click(object sender, EventArgs e) { webBrowser1.GoHome(); } private void backButton_Click(object sender, EventArgs e) { webBrowser1.GoBack(); } private void forwardButton_Click(object sender, EventArgs e) { webBrowser1.GoForward(); } Računarski praktikum 3

  26. WebBrowser private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { if (webBrowser1.CanGoBack) { backButton.Enabled = true; } else { backButton.Enabled = false; } if (webBrowser1.CanGoForward) { forwardButton.Enabled = true; } else { forwardButton.Enabled = false; } } Računarski praktikum 3

  27. Panel Panel kontrola služi za grupiranje elemenata. Slična je GroupBox kontroli, ali za razliku od GroupBox kontrole može imati kliznu traku (Panel.AutoScroll=true), dok ne sadrži naslov. Kontrolama se može standardno pristupati pomoću kolekcije Controls (kolekcija sadrži objekte tipa Control pa je potreban downcasting). Button b = (Button)panel1.Controls[0]; Računarski praktikum 3

  28. FlowLayoutPanel Spremnici tipa FlowLayoutPanel Računarski praktikum 3

  29. FlowLayoutPanel ..... this.Size = new Size(300, 300); FlowLayoutPanel flp1 = new FlowLayoutPanel(); FlowLayoutPanel flp2 = new FlowLayoutPanel(); FlowLayoutPanel flp3 = new FlowLayoutPanel(); flp1.BorderStyle = BorderStyle.FixedSingle; flp2.BorderStyle = BorderStyle.FixedSingle; flp3.BorderStyle = BorderStyle.FixedSingle; flp1.Location = new Point(6, 10); flp1.Size = new Size(280, 135); flp2.Location = new Point(6, 150); flp2.Size = new Size(138, 110); flp3.Location = new Point(148, 150); flp3.Size = new Size(138, 110); Računarski praktikum 3

  30. FlowLayoutPanel flp1.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom; flp2.Anchor = AnchorStyles.Left | AnchorStyles.Bottom; flp3.Anchor = AnchorStyles.Right | AnchorStyles.Bottom; Button b1 = new Button(); Button b2 = new Button(); Button b3 = new Button(); Button b4 = new Button(); b1.Text = "button1"; b2.Text = "button2"; b3.Text = "button3"; b4.Text = "button4"; Računarski praktikum 3

  31. FlowLayoutPanel this.Controls.Add(flp1); this.Controls.Add(flp2); this.Controls.Add(flp3); flp1.Controls.Add(b1); flp1.Controls.Add(b2); flp2.Controls.Add(b3); flp2.Controls.Add(b4); Računarski praktikum 3

  32. FlowLayoutPanel Razvučemo formu Računarski praktikum 3

  33. FlowLayoutPanel Zadatak: Prepravite kod tako da se dobije sljedeće. Računarski praktikum 3

  34. FlowLayoutPanel public class Form1 : Form { FlowLayoutPanel flp; public Form1() { FlowLayoutPanel flp = new FlowLayoutPanel(); flp.BackColor = Color.Indigo; flp.Size = new Size(200, 200); flp.FlowDirection = FlowDirection.TopDown; // flp.WrapContents = false; Controls.Add(flp); Računarski praktikum 3

  35. FlowLayoutPanel for (int i = 1; i < 16; ++i) { Button b = new Button(); b.Text = "gumb " + i; b.BackColor = Color.WhiteSmoke; flp.Controls.Add(b); } } } //ako maknemo komentar na prethodnom slajdu Računarski praktikum 3

  36. DragDrop Primjer: Povlačenjem gumba DragDrop i ispuštanjem iznad Panel spremnika, smještamo taj gumb u spremnik. Pritiskom na gumb Cancel, vraćamo ga natrag na početnu poziciju. Računarski praktikum 3

  37. DragDrop public partial class Form1 : Form { Button button1 = new Button(); Button button2 = new Button(); Panel panel1 = new Panel(); public Form1() { panel1.BorderStyle = BorderStyle.Fixed3D; panel1.BackColor = Color.Azure; panel1.Size = new Size(170, 100); panel1.Location = new Point(10, 10); button1.Text = "DragDrop"; button1.Location = new Point(10, 120); button1.Size = new Size(80, 30); Računarski praktikum 3

  38. DragDrop button2.Text = "Cancel"; button2.Location = new Point(200, 10); button1.MouseDown += button1_MouseDown; button2.Click += button2_Click; panel1.DragDrop += panel1_DragDrop; panel1.DragOver += panel1_DragOver; panel1.AllowDrop = true; Controls.Add(panel1); Controls.Add(button1); Controls.Add(button2); } Računarski praktikum 3

  39. DragDrop private void button1_MouseDown(object sender, MouseEventArgs e) { DoDragDrop(button1, DragDropEffects.Move); } private void button2_Click(object sender, EventArgs e) { Controls.Add(button1); button1.Location = new Point(10, 120); } Računarski praktikum 3

  40. DragDrop private void panel1_DragDrop(object sender, DragEventArgs e) { button1.Location = panel1.PointToClient(new Point(e.X, e.Y)); panel1.Controls.Add(button1); } private void panel1_DragOver(object sender, DragEventArgs e) { e.Effect = DragDropEffects.Move; } } Računarski praktikum 3

  41. Zadatak Napravite formu s panelom i gumbom. Povlačenjem i ispuštanjem iznad panela, tekst se prebacuje s gumba na panel (napravite i verziju s kopiranjem teksta (drugi tip efekta)). Računarski praktikum 3

  42. Zadatak Napravite aplikaciju “Spremi gumbe u panel”. Aplikacija prikazuje jednu formu na kojoj se s lijeva nalazi spremnik tipa Panel. Imamo i dvije kontrole tipa NumericUpDown pomoću koje možemo povećavati i smanjivati veličinu panela. Prozoru se može mijenjati veličina. Panel je uvijek jednako udaljen od lijevog i gornjeg ruba prozora. U prozoru se nalazi i gumb G1 kojeg želimo povlačenjem i ispuštanjem prebaciti u panel. Kad to napravimo, na njegovom početnom položaju pojavi se gumb G2, itd. Pri ubacivanju gumba u panel, gumb se uvijek smješta u isti red kao i prethodni gumb ako ima dovoljno vidljivog mjesta, inače se smješta u sljedeći red (između dva gumba nema razmaka). Kad oznaka povlačenja uđe u prostor panela, panel mora promijeniti boju i vratiti se na staru nakon ispuštanja gumba. Sa strane postoje i dvije kontrole tipa NumericUpDown kojima možemo povećavati i smanjivati duljinu i širinu panela. Pritom se gumbi možda moraju presložiti na način da je uvijek ispunjen cijeli prvi red pa cijeli drugi red itd. Veličina se s te dvije kontrole može smanjiti samo toliko da svi gumbi u panelu budu vidljivi. Također ne smijemo povećati veličinu panela tako da prekriva ostale kontrole u prozoru. Ako u panelu nema dovoljno mjesta da se ispusti gumb i da svi gumbi budu vidljivi, panel neće primiti gumb. Ukoliko kliknemo na neki od gumbova u panelu, on se miče iz panela, a ostali gumbi se moraju presložiti na već opisan način. Gumb i NumericUpDown kontrole su pri razvlačenju prozora uvijek jednako udaljeni od donjeg i desnog ruba prozora. Prozor se ne smije suziti do te mjere da kontrole postanu dijelom nevidljive. Računarski praktikum 3

  43. OnResize protected override void OnResize(System.EventsArgs e) { base.OnResize(e); ....... } Metoda OnResize iz bazne klase objavljuje događaj Resize. Kod izvedenih klasa (kao što je Form1) preporučljivo je dodati kod koji reagira na događaj u ovakav tip metode umjesto standardnog načina prijave za događaj. Računarski praktikum 3

  44. OnResize public class Form1 : Form { Labellabel; bool firstResize1 = true; bool firstResize2 = true; public Form1() { label = new Label(); label.AutoSize = true; Controls.Add(label); this.Resize += _Resize; } Računarski praktikum 3

  45. OnResize void _Resize(object sender, EventArgs e) { if (firstResize1) { label.Text+="_Resize metoda prijavljena za dogadjaj. "; firstResize1 = false; } } protected override void OnResize(EventArgs e) { base.OnResize(e); // Što se događa ako iskomentiramo ovaj redak? if(firstResize2) { label.Text += "Dodatni kod iz OnResize metode u izvedenoj klasi. "; firstResize2 = false; } } Računarski praktikum 3

  46. Resize ResizeBegin, Resize i ResizeEnd događaji se objavljuju kad se forma razvlači. ResizeBegin i ResizeEnd se objavljuju i kad se forma pomiče (ne uzrokuje ih promjena svojstava Size i Location). SizeChanged se objavljuje kad se promijeni svojstvo Size (bilo u kodu ili preko korisničkog sučelja). Računarski praktikum 3

  47. SplitContainer SplitContainer je spremnik koji se sastoji od dva spremnika tipa SplitterPanel (Panel1 za gornji ili lijevi te Panel2 za donji ili desni spremnik). Korisnik može mijenjati veličinu ta dva spremnika. SplitContainer sc = new SplitContainer(); sc.Orientation = Orientation.Horizontal; sc.BorderStyle = BorderStyle.FixedSingle; this.Controls.Add(sc); Button b1 = new Button(); Button b2 = new Button(); sc.Panel1.Controls.Add(b1); sc.Panel2.Controls.Add(b2); Računarski praktikum 3

  48. Primjer: SplitContainer SplitContainer2.Panel1 SplitContainer1.Panel1 (npr. za kontrolu TreeView) SplitContainer2.Panel2 SplitContainer1.Panel2 Računarski praktikum 3

  49. Primjer: SplitContainer FixedPanel Računarski praktikum 3

  50. Primjer: SplitContainer public class Form1 : Form { SplitContainer splitContainer1; SplitContainer splitContainer2; public Form1() { splitContainer1 = new SplitContainer(); splitContainer2 = new SplitContainer(); Računarski praktikum 3

More Related