Download præsentationen
Præsentation er lastning. Vent venligst
Offentliggjort afBertha Iversen Redigeret for ca. et år siden
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!!!
Lignende præsentationer
© 2024 SlidePlayer.dk Inc.
All rights reserved.