WinForms: GUI Programmering i .NET - [PPT Powerpoint] (2024)

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (1)

WinForms: GUI Programmering i .NET

Kilde: Joe Hummel, kursus i .Net, jan. 2003

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (2)

2Nordjyllands Erhvervakademi - 2007

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

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (3)

3Nordjyllands Erhvervakademi - 2007

Del 1

• Event-drevet, code-behind programmering…

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (4)

4Nordjyllands Erhvervakademi - 2007

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

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (5)

5Nordjyllands Erhvervakademi - 2007

Eksempel på GUI-baserede events

• Mouse move• Mouse click• Mouse double-click• Key press• Button click• Menu selection• Change in focus• Window activation• etc.

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (6)

6Nordjyllands Erhvervakademi - 2007

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…

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (7)

7Nordjyllands Erhvervakademi - 2007

Call-backs

• Events er et call fra et objekt back til os…• Hvordan oprettes forbindelsen?

– Visual Studio etablerer forbindelsen via auto-genereret kode

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (8)

8Nordjyllands Erhvervakademi - 2007

Del 2

• Visual Studio .NET…

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (9)

9Nordjyllands Erhvervakademi - 2007

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.

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (10)

10Nordjyllands Erhvervakademi - 2007

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…

design run

break

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (11)

11Nordjyllands Erhvervakademi - 2007

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…

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (12)

12Nordjyllands Erhvervakademi - 2007

Step 1

• Opret et nyt projekt af typen “Windows Application”– VS. Opretter automatisk en form…

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (13)

13Nordjyllands Erhvervakademi - 2007

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

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (14)

14Nordjyllands Erhvervakademi - 2007

GUI design …

• En simpel regnemaskine:

• Placer og konfigurer controls– klik for at vælge– sæt properties via Propertiesvinduet

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (15)

15Nordjyllands Erhvervakademi - 2007

Step 3 — kodedesign

• Implementer formens “Code behind”…• Dobbeltklik på den control du vil implementere

– kodeviduet popper automatisk frem

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (16)

16Nordjyllands Erhvervakademi - 2007

Step 4 — run mode

• Kør!

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (17)

17Nordjyllands Erhvervakademi - 2007

Break mode?

• Igangsættes i denne app eksempelvis ved forkert indtastning…

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (18)

18Nordjyllands Erhvervakademi - 2007

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

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (19)

19Nordjyllands Erhvervakademi - 2007

Del 3

• WinForms…

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (20)

20Nordjyllands Erhvervakademi - 2007

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

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (21)

21Nordjyllands Erhvervakademi - 2007

Abstraktion

• FCL fungerer som abstraktion– adskiller WinForm app fra den underlæggende platform

System.Windows.Forms.Form

CLR

Windows OS

instance of

FCL classobject

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (22)

22Nordjyllands Erhvervakademi - 2007

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();

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (23)

23Nordjyllands Erhvervakademi - 2007

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();

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (24)

24Nordjyllands Erhvervakademi - 2007

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

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (25)

25Nordjyllands Erhvervakademi - 2007

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;}

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (26)

26Nordjyllands Erhvervakademi - 2007

Part 4

• Controls…

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (27)

27Nordjyllands Erhvervakademi - 2007

Controls

• Brugerinterfaceobjekter på formen:

– labels– buttons– text boxes– menus– list & combo boxes– option buttons– check boxes– etc.

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (28)

28Nordjyllands Erhvervakademi - 2007

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

object

object

object

object

object

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (29)

29Nordjyllands Erhvervakademi - 2007

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…

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (30)

30Nordjyllands Erhvervakademi - 2007

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

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (31)

31Nordjyllands Erhvervakademi - 2007

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

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (32)

32Nordjyllands Erhvervakademi - 2007

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

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (33)

33Nordjyllands Erhvervakademi - 2007

Text boxes

• Mest almindelige control!– Til visning af text– til data fra eksempelvis db

• Masser af features…

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (34)

34Nordjyllands Erhvervakademi - 2007

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

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (35)

35Nordjyllands Erhvervakademi - 2007

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

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (36)

36Nordjyllands Erhvervakademi - 2007

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

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (37)

37Nordjyllands Erhvervakademi - 2007

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

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (38)

38Nordjyllands Erhvervakademi - 2007

Caveats• Validating event’en har nogle “punkter"…• Dels er den fejlbehæftet:

– hvis cancel knappen er sat til blive trigget af ESC, bliver den stadig valideret

– hvis brugeren klikker X for at lukke form’en, bliver den stadig valideret

• Dels, må boksen få fokus:– hvad hvis brugeren trigger OK via Enter (default)?– hvad hvis brugeren klikker OK før den får fokus?

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (39)

39Nordjyllands Erhvervakademi - 2007

Work-arounds…

• Skjul boksen• Lad være med at sætte form’ens CancelButton property• Sikre validation i OK knap:

private void cmdOK_Click(object sender, System.EventArgs e) { foreach (Control c in this.Controls) if (c is TextBox) { // check for valid input... c.Focus(); // give control focus, then validate if (!this.Validate()) return; }}

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (40)

40Nordjyllands Erhvervakademi - 2007

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

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (41)

41Nordjyllands Erhvervakademi - 2007

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);

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (42)

42Nordjyllands Erhvervakademi - 2007

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);

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (43)

43Nordjyllands Erhvervakademi - 2007

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

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (44)

44Nordjyllands Erhvervakademi - 2007

Kun toppen af isbjerget…

• Menuer, dialoger, toolbars, etc.

• Tusinder af andre controls– .NET and ActiveX– højreklik på Toolbox– "Customize Toolbox"

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (45)

45Nordjyllands Erhvervakademi - 2007

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!!!

WinForms: GUI Programmering i .NET - [PPT Powerpoint] (46)

46Nordjyllands Erhvervakademi - 2007

Referencer

• Books:– S. Lippman, "C# Primer"– R. Grimes, "Developing Applications with Visual Studio .NET"

• De bedste bøger om GUI er pt VB-baserede:– J. Savage, "The VB.NET Coach" (introductory)– F. Balena, "Programming Microsoft VB .NET (Core

Reference)" (broad coverage, intermediate level)

WinForms:   GUI Programmering i .NET - [PPT Powerpoint] (2024)

References

Top Articles
Latest Posts
Article information

Author: Dr. Pierre Goyette

Last Updated:

Views: 6355

Rating: 5 / 5 (50 voted)

Reviews: 81% of readers found this page helpful

Author information

Name: Dr. Pierre Goyette

Birthday: 1998-01-29

Address: Apt. 611 3357 Yong Plain, West Audra, IL 70053

Phone: +5819954278378

Job: Construction Director

Hobby: Embroidery, Creative writing, Shopping, Driving, Stand-up comedy, Coffee roasting, Scrapbooking

Introduction: My name is Dr. Pierre Goyette, I am a enchanting, powerful, jolly, rich, graceful, colorful, zany person who loves writing and wants to share my knowledge and understanding with you.