1 / 39

WinForms

WinForms. GUI Programmering i .NET. Mål. “.NET supports two types of form-based apps, WinForms and WebForms. WinForms are the traditional, desktop GUI apps. The great news is that Visual Studio .NET enables quick, drag-and-drop construction of form-based applications…”

gagan
Télécharger la présentation

WinForms

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. WinForms GUI Programmering i .NET

  2. Mål “.NET supports two types of form-based apps, WinForms and WebForms. WinForms are the traditional, desktop GUI apps. The great news is that Visual Studio .NET enables quick, drag-and-drop construction of form-based applications…” • Event-drevet, code-behind programmering • Visual Studio .NET • WinForms • Controls

  3. Event-drevet, code-behind programmering • Ideenermegetsimpel: • “User actions” blivertil “events” • Events overføres en for en tilapplikationen, somprocessererereventenvha. en eventhandler • Sådanprogrammeres de flesteGUI’er… GUI App

  4. Eksemplerpå GUI-baserede events • Mouse move • Mouse click • Mouse double-click • Key press • Button click • Menu selection • Change in focus • Window activation • etc.

  5. Code-behind • Events håndteresafmetoder (eventhandlere) som ligger “bagved” den synlige GUI • I MS-termer kendtsom "code-behind" • Vores job bliver at programmeredissemetoder…

  6. Call-backs • Events er et callfra et objektbacktilos… • Hvordanoprettesforbindelsen? • Visual Studio etablererforbindelsen via auto-genereretkode

  7. Visual Studio .NET • Ét IDE tilalle former for .NET udvikling • Fra klassebiblioteker over form-baserede apps til web services • Du kanbruge C#, VB, C++, J#, etc.

  8. design run break Grundlæggende Tilstande • Visual Studio operereri 1 af 3 tilstande: • Design • Run • Break • Se VS title bar hvis du eritvivl…

  9. Eksempel: Et Windows-program • GUI apps baserespåformsogcontrols… • En form repræsenterer et vindue • En form indeholder 0 ellerflere controls • En control interagerer med brugeren • Lad osimplementere en GUI app trin for trin…

  10. Trin 1 – Opret projekt i VS • Opret et nytprojektaftypen “Windows Forms Application” • VS opretterautomatisk en form…

  11. Trin 2 – GUI Design • Vælg de ønskede controls fratoolbox’en… • Placérmusen over toolbox for at se controls • Drag-and-drop tilformen • Placérogtilpasstørrelsenpå dine controls

  12. Trin 2 – GUI Design • En simpelregnemaskine: • Placérogkonfigurer controls • Klikfor at vælge • Sætproperties via Properties-vinduet

  13. Trin 3 - Koden • Implementer formens “Code behind”… • Dobbeltklikpå den control du vilimplementere • Kodevinduetpopper automatiskfrem

  14. Trin 4 – Kør! • Tryk F5 for at kompilere koden og starte programmet

  15. Break mode? • Igangsættesberegningen med forkertindtastning…

  16. Arbejde med Visual Studio • I Visual Studio arbejder vi med source files, projects & solutions • Source files indeholderkode • Extension .cs, .vb, etc. • Et projektrepræsenterer 1 assembly • Bruges af VS til at holdestyrpå source files • Allesource files skalskrivesisamme sprog • Extension .csproj, .vbproj, etc. • Solution (*.sln) files holder styrpåprojekter • Såman kanarbejde med flereprojekter

  17. WinForms • Et andetnavn for traditionelle, Windows-agtigeGUI-applikationer • I modsætningtilWebForms, somer web-baserede • Implementeresvha. FCL • Dvs. portabelttilenhver .NET platform

  18. object Abstraktion • FCL fungerersomabstraktion • AdskillerWinForm app fra den underlæggendeplatform instance of FCL class System.Windows.Forms.Form CLR Windows OS

  19. Form Properties • Form properties styrerformensvisuellefremtræden: • AutoScroll • BackgroundImage • ControlBox • FormBorderStyle (sizable?) • Icon • Location • Size • StartPosition • Text (fx window's caption) • WindowState (minimized, maximized, normal) Form1 form; form = new Form1(); form.WindowState = FormWindowState.Maximized; form.Show();

  20. Form Metoder form.Hide(); . . . form.Show(); • Actions der kanudførespå en form: • Activate:Givdenne form fokus • Close: Luk& frigørtilknyttederessourcer • Hide: Gem, men hold fast iressourcernetilsenerevisning. • Refresh: Redraw • Show: Gørformensynligpåskærmen & activate

  21. Form Events • Events der kanreagerespå: • Find properties-vinduet • Dobbeltklikpå event-navnet • Load: ligeførformen vises første gang • Closing: nårformenlukkes (mulighed for cancel) • Closed: nårformenheltsikkertlukkes • Resize: nårbrugererændrerpåformstørrelsen • Click: nårbrugerenklikkerpåformensbaggrund • KeyPress: nårbrugerentrykker en tastmensformenharfokus

  22. Eksempel • Spørgbrugerenførformenlukkes: private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e) { DialogResult r; r = MessageBox.Show("Do you really want to close?", "MyApp", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); if (r == DialogResult.No) e.Cancel = true; }

  23. Controls • Brugerinterface-objekterpåformen: • Labels • Buttons • Text boxes • Menus • List & combo boxes • Option buttons • Check boxes • Etc.

  24. object object object object object object Abstraktion • Forms, er controls baseretpåklasseri FCL: • System.Windows.Forms.Label • System.Windows.Forms.TextBox • System.Windows.Forms.Button • etc. • Controls erobjekterafdisseklasser

  25. Hvemopretteralledisseobjekter? • Hvemeransvarlig for oprettelsenaf control-objekter? • Kodenauto-genereresaf Visual Studio • Efterform-objekteteroprettetoprettes control-objekterne…

  26. Naming Conventions • Sæt dine controllers navne via Name property • The Microsoft Naming Convention: • cmdOKrefererertil en command-knap • lstNamesrefererertil en List Box Control • txtFirstNamerefererertil en Textbox Control

  27. Labels • Tilstatiskvisningaftekst • Bruges til at label andre ting påformen • Eller tilvisningaf read-only resultater • Interessanteproperties: • Text: Detsombrugerenser • Font: Hvordanbrugerenserdet

  28. Command-knapper • Til at klikkepåogderved fåudført en handling • Interessante properties: • Text: Knaptekst • Font: Hvordanknapteksten vises • Enabled: Kan den klikkespå? • AcceptButton: Sat til at klikkeknappenpå ENTER • CancelButton: Sat til at klikkeknappenpå ESC • Interessante events: • Click: Når der trykkespåknappen

  29. Tekstfelter • Mestalmindelige control! • Tilvisningaftekst • Tildata fraeksempelvisdatabase • Masseraf features…

  30. Text box Properties • Basale properties: • Text: tekstboksensindhold (string) • Modified: ertekstenmodificeretafbrugeren? (boolean) • ReadOnly: hvisbrugerenikkeskalkunnemodificere • Multi-line text boxes? • MultiLine: True tilladerflere linier • Lines: array of strings, en for hverlinieitekstboksen • ScrollBars: none, horizontal, vertical, horiz. + vert. • AcceptsReturn & AcceptsTab: skalbrugerenkunnebruge tabulator og return

  31. Text box methods • Interessantemetoder: • Clear: fjernindholdet • Cut, Copy, Paste: interaktion med clipboard’et • Undo: undo sidsterettelseitekstboksen • Select, SelectAll: vælgnogetaf/alt indholdet

  32. Text Box Events • Interesanteevents • Enter, Leave: forekommer, nårfokusændres • KeyPress: forekommernår en asciitastaktiveres • KeyDown, KeyUp: forekommervedalletaste kombinationer • TextChanged: forekommernårtekstenændres • Validating and Validated • Validating giver dig mulighed for at afviseinvalide input

  33. Eksempel: Input Validering • Text boxekræveroftevalidering • .NET tilbyderValidating event • Bliversendtnårbox’en mister focus cmdOk.CausesValidation = True cmdCancel.CausesValidation = False private void txtName_Validating(object sender, System.ComponentModel.CancelEventArgs e) { if (this.textBox1.Text.Trim() == "") { // invalid input! MessageBox.Show("Please enter name or id..."); e.Cancel = true; // cancel returns focus back to text box } }

  34. Radio Buttons og Check Boxes • Tilladerbrugeren at vælge en ellerflere options • Radio buttons: • Brugerenkan kun vælgeén (mutually exclusive) • Check boxes: • Brugerenkanvælge en ellerflere (uafhængige) • Properties & events: • Checked: True hvisvalgt, False hvisikke • CheckedChangedforekommernår "Checked" ændres

  35. Group Boxes • Visuelgrupperingaf controls • Tillader iteration gennemgruppenselementer… foreach (RadioButtonrb in this.groupBox1.Controls) if (rb.Checked) MessageBox.Show(rb.Name);

  36. List Boxes • God til at vise/vedligeholdeen listeaf data • Listeaf strings • Listeafobjects (list box kalderselvToString()) Customer[] customers; . . // create & fill array with objects... . // display customers in list box foreach (Customer c in customers) this.listBox1.Items.Add(c); // display name of selected customer (if any) Customer c; c = (Customer) this.listBox1.SelectedItem; if (c == null) return; else MessageBox.Show(c.Name);

  37. Advarsel! • Skrivikkekode der afhængerafrækkefølgenaf events… • Rækkefølgeneraldriggaranteret • Hver event behandlesuafhængigtafandre • Nogetkode trigger events bagvedkoden… • En naturligbivirkningafevent-drevetprogrammering this.textBox1.Text = "new value" // triggers TextChanged

  38. Kun toppenafisbjerget… • Menuer, dialoger, toolbars, etc. • Tusinderafandre controls • .NET and ActiveX • Højreklikpå Toolbox • "Customize Toolbox"

  39. Opsamling • Event-drevetprogrammeringermegetintuitivti GUI apps • Forms erdetførsteskridti GUI design • Hverform repræsenterer et vinduepåskærmen • Konstruktionaf GUI foregårved drag-and-drop • Brugereninteragererprimært med formens control-objekter • Labels, text boxes, buttons, etc. • GUI programmeringer control programmering!!!

More Related