Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

5. WinForms: GUI Programmering i.NET. 2 Nordjyllands Erhvervakademi - 2009 Mål “.NET supports two types of form-based apps, WinForms and WebForms. WinForms.

Lignende præsentationer


Præsentationer af emnet: "5. WinForms: GUI Programmering i.NET. 2 Nordjyllands Erhvervakademi - 2009 Mål “.NET supports two types of form-based apps, WinForms and WebForms. WinForms."— Præsentationens transcript:

1 5. WinForms: GUI Programmering i.NET

2 2 Nordjyllands Erhvervakademi - 2009 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 3 Nordjyllands Erhvervakademi - 2009 Del 1 •Event-drevet, code-behind programmering…

4 4 Nordjyllands Erhvervakademi - 2009 Event-driven applications •Ideen er meget simpel: –“user actions” bliver til “events” –events overføres en for en til applikationen, som processererer eventen vha. en eventhandler –Sådan programmeres de fleste GUI’er… GUI App

5 5 Nordjyllands Erhvervakademi - 2009 Eksempel på GUI-baserede events •Mouse move •Mouse click •Mouse double-click •Key press •Button click •Menu selection •Change in focus •Window activation •etc.

6 6 Nordjyllands Erhvervakademi - 2009 Code-behind •Events håndteres af metoder (eventhandlere) som ligger “bagved” den synlige GUI –I MS-termer kendt som "code-behind" –Vores job bliver at programmere disse metoder…

7 7 Nordjyllands Erhvervakademi - 2009 Call-backs •Events er et call fra et objekt back til os… •Hvordan oprettes forbindelsen? –Visual Studio etablerer forbindelsen via auto-genereret kode

8 8 Nordjyllands Erhvervakademi - 2009 Del 2 •Visual Studio.NET…

9 9 Nordjyllands Erhvervakademi - 2009 Visual Studio.NET (VS.NET) •Ét IDE til alle former for.NET udvikling –Fra klassebiblioteker over form-baserede apps til web services –Du kan bruge C#, VB, C++, J#, etc.

10 10 Nordjyllands Erhvervakademi - 2009 Basal operation •Visual Studio opererer i 1 af 3 tilstande: 1)design 2)run 3)break •Se VS title bar hvis du er i tvivl… designrunbreak

11 11 Nordjyllands Erhvervakademi - 2009 Eksempel: en windows-applikation •GUI apps baseres på forms og controls… –en form repræsenterer et vindue –en form indeholder 0 eller flere controls –en control interagerer med brugeren •Lad os implementere en GUI app i en række skridt…

12 12 Nordjyllands Erhvervakademi - 2009 Step 1 •Opret et nyt projekt af typen “Windows Application” –VS. Opretter automatisk en form…

13 13 Nordjyllands Erhvervakademi - 2009 Step 2 — GUI design •Vælg de ønskede controls fra toolbox’en… –placer musen over toolbox for at se controls –drag-and-drop til formen –placer og tilpas størrelsen på dine control

14 14 Nordjyllands Erhvervakademi - 2009 GUI design … •En simpel regnemaskine: •Placer og konfigurer controls –klik for at vælge –sæt properties via Propertiesvinduet

15 15 Nordjyllands Erhvervakademi - 2009 Step 3 — kodedesign •Implementer formens “Code behind”… •Dobbeltklik på den control du vil implementere –kodeviduet popper automatisk frem

16 16 Nordjyllands Erhvervakademi - 2009 Step 4 — run mode •Kør!

17 17 Nordjyllands Erhvervakademi - 2009 Break mode? •Igangsættes i denne app eksempelvis ved forkert indtastning…

18 18 Nordjyllands Erhvervakademi - 2009 Arbejde med Visual Studio •I Visual Studio arbejder vi med source files, projects & solutions •Source files indeholder kode –extension.cs,.vb, etc. •Et projekt repræsenterer 1 assembly –bruges af VS til at holde styr på source files –alle source files skal skrives i samme sprog –extension.csproj,.vbproj, etc. •Solution (*.sln) files holder styr på projekter –så man kan arbejde med flere projekter

19 19 Nordjyllands Erhvervakademi - 2009 Del 3 •WinForms…

20 20 Nordjyllands Erhvervakademi - 2009 WinForms •Et andet navn for traditionelle, Windowsagtige GUI-applikationer –i modsætning til WebForms, som er web-baserede •Implementeres vha. FCL –dvs. portabelt til enhver.NET platform

21 21 Nordjyllands Erhvervakademi - 2009 Abstraktion •FCL fungerer som abstraktion –adskiller WinForm app fra den underlæggende platform System.Windows.Forms.Form CLR Windows OS instance of FCL class object

22 22 Nordjyllands Erhvervakademi - 2009 Form properties •Form properties kontrollerer formens visuelle fremtræ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();

23 23 Nordjyllands Erhvervakademi - 2009 Form metoder •Actions der kan udføres på en form: –Activate :giv denne form fokus –Close :luk & frigør tilknyttede ressourcer –Hide :gem, men hold fast i ressourcerne til senere visning. –Refresh :redraw –Show :gør formen synlig på skærmen & activate form.Hide();. form.Show();

24 24 Nordjyllands Erhvervakademi - 2009 Form events •Events du kan reagere på: –find propertiesvinduet –dobbeltklik på event-navnet –Load :lige før formen vises første gang –Closing :når formen lukkes (mulighed for cancel) –Closed :når formen helt sikkert lukkes –Resize :når brugerer ændrer på formstørrelsen –Click :når brugeren klikker på formens baggrund –KeyPress : når brugeren trykker en tast mens formen har fokus

25 25 Nordjyllands Erhvervakademi - 2009 Eksempel •Spørg brugeren før formen lukkes: 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; }

26 26 Nordjyllands Erhvervakademi - 2009 Part 4 •Controls…

27 27 Nordjyllands Erhvervakademi - 2009 Controls •Brugerinterfaceobjekter på formen: –labels –buttons –text boxes –menus –list & combo boxes –option buttons –check boxes –etc.

28 28 Nordjyllands Erhvervakademi - 2009 Abstraction •Som forms, er controls baseret på klasser i FCL: –System.Windows.Forms.Label –System.Windows.Forms.TextBox –System.Windows.Forms.Button –etc. •Controls er objekter af disse klasser object

29 29 Nordjyllands Erhvervakademi - 2009 Hvem opretter alle disse objekter? •Hvem er ansvarlig for oprettelsen af control-objekter? –koden auto-genereres af Visual Studio –Efter formobjektet er oprettet oprettes control-objekterne…

30 30 Nordjyllands Erhvervakademi - 2009 Naming conventions •Sæt dine controllers navne via Name property •The Microsoft Naming Convention: –cmdOK refererer til en command-knap –lstNames refererer til en List Box Control –txtFirstName refererer til en Textbox Control

31 31 Nordjyllands Erhvervakademi - 2009 Labels •Til statisk visning af tekst –bruges til at label andre ting på formen –eller til visning af read-only resultater •Interesting properties: –Text :Det som brugeren ser –Font :Hvordan brugeren ser det

32 32 Nordjyllands Erhvervakademi - 2009 Command-knapper •Til at klikke på og derved få udført en handling •Interessante properties: –Text :Knaptekst –Font :Hvordan knapteksten vises –Enabled :Kan den klikkes på? –AcceptButton :Sat til at klikke knappen på ENTER –CancelButton :Sat til at klikke knappen på ESC •Interessante events: –Click :Når der trykkes på knappen

33 33 Nordjyllands Erhvervakademi - 2009 Text boxes •Mest almindelige control! –Til visning af text –til data fra eksempelvis db •Masser af features…

34 34 Nordjyllands Erhvervakademi - 2009 Text box properties •Basale properties: –Text :tekstboksens indhold (string) –Modified :er teksten modificeret af brugeren? (boolean) –ReadOnly : hvis brugeren ikke skal kunne modificere •Multi-line text boxes? –MultiLine :True tillader flere linier –Lines :array of strings, en for hver linie i tekstboksen –ScrollBars :none, horizontal, vertical eller både horiz. & vert. –AcceptsReturn & AcceptsTab : skal brugeren kunne bruge tabulator og return

35 35 Nordjyllands Erhvervakademi - 2009 Text box methods •Interessante metoder: –Clear : fjern indholdet –Cut, Copy, Paste : interaktion med clipboard’et –Undo : undo sidste rettelse i tekstboksen –Select, SelectAll : vælg noget af/alt indholdet

36 36 Nordjyllands Erhvervakademi - 2009 Text box hændelser •Interesante hændelser: –Enter, Leave :forekommer, når fokus ændres –KeyPress :forekommer når en ascii tast aktiveres –KeyDown, KeyUp :forekommer ved alle taste kombinationer –TextChanged :forekommer når teksten ændres –Validating and Validated •Validating giver dig mulighed for at afvise invalide input

37 37 Nordjyllands Erhvervakademi - 2009 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 } Eksempel: input invalidation •Text boxe kræver ofte validering –.NET tilbyder Validating event –bliver trigget når box’en mister focus cmdOk.CausesValidation = True cmdCancel.CausesValidation = False

38 38 Nordjyllands Erhvervakademi - 2009 Radio buttons og Check boxes •Tillader brugeren at vælge en eller flere options •Radio buttons: –brugeren kan kun vælge én (mutually-exclusive) •Check boxes: –brugeren kan vælge en eller flere (uafhængige) •Properties & events: –Checked :True hvis valgt, False hvis ikke –CheckedChanged forekommer når "Checked" ændres

39 39 Nordjyllands Erhvervakademi - 2009 Group boxes •Visuel gruppering af controls •Tillader iteration gennem gruppens elementer… foreach (RadioButton rb in this.groupBox1.Controls) if (rb.Checked) MessageBox.Show(rb.Name);

40 40 Nordjyllands Erhvervakademi - 2009 Customer[] customers;.. // create & fill array with objects.... // display customers in list box foreach (Customer c in customers) this.listBox1.Items.Add(c); List Boxes •God til at vise /vedligeholde en liste af data –liste af strings –liste af object (list box kalder selv ToString()) // display name of selected customer (if any) Customer c; c = (Customer) this.listBox1.SelectedItem; if (c == null) return; else MessageBox.Show(c.Name);

41 41 Nordjyllands Erhvervakademi - 2009 Advarsler 1.Skriv ikke kode der afhænger af rækkefølgen af events… –rækkefølgen er aldrig garanteret –Hver event behandles uafhængigt af andre 2.Noget kode trigger events bagved koden… –en naturlig sideeffekt af event-drevet programmering this.textBox1.Text = "new value" // triggers TextChanged

42 42 Nordjyllands Erhvervakademi - 2009 Kun toppen af isbjerget… •Menuer, dialoger, toolbars, etc. •Tusinder af andre controls –.NET and ActiveX –højreklik på Toolbox –"Customize Toolbox"

43 43 Nordjyllands Erhvervakademi - 2009 Opsamling •Event-drevet programmering er meget intuitivt i GUI apps •Forms er det første skridt i GUI design –hver form repræsenterer et vindue på skærmen –Konstruktion af GUI foregår ved drag-and-drop •Brugeren interagerer primært med formens control-objekter –labels, text boxes, buttons, etc. –GUI programmering er control programmering!!!


Download ppt "5. WinForms: GUI Programmering i.NET. 2 Nordjyllands Erhvervakademi - 2009 Mål “.NET supports two types of form-based apps, WinForms and WebForms. WinForms."

Lignende præsentationer


Annoncer fra Google