WinForms: GUI Programmering i .NET

Slides:



Advertisements
Lignende præsentationer
VMS data Geografisk og tidsmæssig udvikling af indsatsen i tobisfiskeriet v/ dataspecialist Josefine Egekvist Sekretariat for myndighedsbetjening.
Advertisements

Atomer Et programmeret forløb. En måde at lære på.
SharePoint /36 2 General SettingsPermissions and ManagementCommunications Titel, description and navigation Versioning settings Advanced settings.
CoDriver Afslut 1 Tastaturet Her kan du få lidt at vide om tastaturet og tasternes funktion. Klik på knapperne nederst til venstre for at bladre frem og.
Game Maker 7. Sådan ser Game Maker ud når det startes op.
Videregående pc-vejledning Modul 04: Windows-elementer 60+Bornholm.
Hjemmesidekonstruktion Tjekspørgsmål 1.Hvad er et markup-sprog – hvad bruges det til? 2.Hvad er forskellen mellem et markup-sprog og et scriptsprog? 3.Hvad.
Torbenfeldvej Vallensbæk strand Tlf.: – – dagligt brug af vores hjemmeside •AGEN LYS har en stor og omfattende.
Introduktion til HTML Formularer V1 introduktion til formularer Den sidste af HTML strukturmarkørerne er FORM-markøren, der bruges til at lave.
Velkommen til Softwarekonstruktion
5. WinForms: GUI Programmering i.NET. 2 Nordjyllands Erhvervakademi Mål “.NET supports two types of form-based apps, WinForms and WebForms. WinForms.
1 GUI Programmering i.NET WinForms. Mål “.NET supports two types of form-based apps, WinForms and WebForms. WinForms are the traditional, desktop GUI.
Instruktion i Animation Shop
Formularer (Access, del 3)
Atlas/Otto Knudsen 1 "Atlas"  AJAX Extensions til ASP.NET.
07 – Kort om OO Introduktion.
Sikkerhed/Otto Knudsen 1 Diagnostics  Debug af web-applikationer.
Hvordan bruger jeg First Class konferencerne ?
Distribueret programmering, specielt.NET Remoting Rasmus D. Lehrmann DM
Object-Orienteret Programmering og Design. 2 Nordjyllands Erhvervakademi – 2009 Indhold “Classes, objects and object-oriented programming (OOP) play a.
NetBeans Installation og brug.
Design af brugerflader11.1 Kursusgang 11 Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing.
Design af brugerflader12.1 Kursusgang 12 Oversigt: Sidste kursusgang Layout-manager Event-håndtering.
Representations for Path Finding in Planar Environments.
Exceptions. 2 Nordjyllands Erhvervakademi – 2009 Objectives “Unfortunately, errors are a part of life. Some are detected by the compiler, some are detected.
Hvordan man skriver koden.
Opret en database i Reference Manager, ver. 11 Åbn programmet. Opret en ny database. Placér basen ude på ”skrivebordet ” (kun i denne sammenhæng – da baserne.
Kursus om borger.dk og brugen af digital signatur
Masterpages/Otto Knudsen 1 Master Pages Master Pages i ASP.NET 2.0.
Eksekvering/Otto Knudsen 1 Udrulning Publicering af en web-applikation.
Introduktion/Otto Knudsen 1 Overblik WebForms ASP.NET.
Oprettelse af tabeller (Access, del 2)
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
Pleje og Sundhed Gennemførte719 Inviterede895 Svarprocent80% FREDERICIA KOMMUNE MTU og Psykisk APV 2012 Rapportspecifikationer.
1..NET Arkitektur. 2 Nordjyllands Erhvervakademi Mål “Microsoft.NET is based on the Common Language Runtime (CLR) and an extensive set of Framework.
18 – Java Server Faces. 2 NOEA2009Java-kursus – JSF 2 Web-applikationer - 1 Brugere interagerer med en Web-browser Browseren sender forespørgsler til.
ETU 2008 | Elevtilfredshedsundersøgelse Erhvervsskolen Nordsjælland HTX (Teknisk Gymnasium) - Hillerød Baseret på 313 besvarelser.
1 Bestanddele i en Windows form-løsning GUI kontroller (eng.: controls) & komponenter (eng.: components) Almindelige egenskaber, metoder & hændelser for.
AJAX/Otto Knudsen 1 AJAX Motivation Definition. AJAX/Otto Knudsen 2 Motivation En typisk web-applikation er synkron klienten sender en forespørgsel og.
MSBuild & Team Build i C#/C++ solutions VSTS ERFA d. 25 November.
Rapporter (Access, del 5). RHS – Informationsteknologi – Udgangspunkt Vi har oprettet en database Vi har defineret en eller flere tabeller, og.
1 Tråde 2 Plan Trådbegrebet Synkronisering Koordinering Eksempel: et flertrådet spil.
Grunde til at jeg elsker dig
1..NET Arkitektur. Mål “Microsoft.NET is based on the Common Language Runtime (CLR) and an extensive set of Framework Class Libraries (FCL). The CLR defines.
Lektion 7 Læsestof: Kopier fra Caranno
Fundamentale datastrukturer
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
1..NET Arkitektur. 2 Nordjyllands Erhvervakademi Mål “Microsoft.NET is based on the Common Language Runtime (CLR) and an extensive set of Framework.
Interaktionsformer En begrebsmæssig model kan understøttes med forskellige interaktionsformer Interaktionsformen fastlægger centrale egenskaber: Hvordan.
1 Team Build med Team Foundation Server 2008 Konfiguration og udvidelse af build jobs Kort præsentation Hvorfor bruge Team Build Afvikling af et build.
Masterpages/Otto Knudsen 1 Navigation på webstedet Kontroller til navigation mellem siderne på webstedet.
10. Datastrukturer. 2 Nordjyllands Erhvervakademi Collections library Datastrukturer i.NET kaldes normalt Collections Findes i namespace System.Collections.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
DIEB4.1 Kursusgang 4 Oversigt: Sidste kursusgang Opgaver Aktivitet 2: Generer design (fortsat) Design af interaktionselementer.
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
Oprettelse af tabeller (Access, del 2)
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
C#: Udtryk og metoder Kilde: Joe Hummel. 2 Nordjyllands Erhvervakademi – 2008 Indhold “With regards to programming statements and methods, C# offers what.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
DIEB7.1 Kursusgang 7 Oversigt: Sidste kursusgang Layout-manager Event-håndtering.
Databaseadgang fra C#:
C#: Data Typer. 2 Nordjyllands Erhvervakademi Indhold: “.NET is designed around the CTS, or Common Type System. The CTS is what allows assemblies,
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
DIEB7.1 Kursusgang 7 Oversigt: Sidste kursusgang Opgaver Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge45 GUI.
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
Formular designer – Basis Efterår 2016 Tilst
Software Testing Software testing.
(brug af MVVMStarterLibrary2018)
Kode til Event på Kontrol
Præsentationens transcript:

WinForms: GUI Programmering i .NET January 2003 WinForms: GUI Programmering i .NET Kilde: Joe Hummel, kursus i .Net, jan. 2003 Denmark .NET Workshop © 2003 Joe Hummel

Mål 5. WinForms January 2003 “.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 GUI = Graphical User Interface Denmark .NET Workshop © 2003 Joe Hummel

Del 1 Event-drevet, code-behind programmering…

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

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

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…

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

Del 2 Visual Studio .NET…

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.

Basal operation Visual Studio opererer i 1 af 3 tilstande: design run 5. WinForms January 2003 Visual Studio opererer i 1 af 3 tilstande: design run break Se VS title bar hvis du er i tvivl… design run break Denmark .NET Workshop © 2003 Joe Hummel

Eksempel: en windows-applikation 5. WinForms January 2003 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… Denmark .NET Workshop © 2003 Joe Hummel

Step 1 Opret et nyt projekt af typen “Windows Application” 5. WinForms January 2003 Opret et nyt projekt af typen “Windows Application” VS. Opretter automatisk en form… Denmark .NET Workshop © 2003 Joe Hummel

Step 2 — GUI design Vælg de ønskede controls fra toolbox’en… 5. WinForms January 2003 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 ESC key can be used to dismiss the toolbox window if it doesn't auto-hide by itself. The "Form Designer" is the name of the tool within Visual Studio that allows you to design GUIs via drag-and-drop. Denmark .NET Workshop © 2003 Joe Hummel

GUI design … En simpel regnemaskine: Placer og konfigurer controls 5. WinForms January 2003 En simpel regnemaskine: Placer og konfigurer controls klik for at vælge sæt properties via Propertiesvinduet You need 2 TextBox controls, and a Button control. Denmark .NET Workshop © 2003 Joe Hummel

Step 3 — kodedesign Implementer formens “Code behind”… 5. WinForms January 2003 Implementer formens “Code behind”… Dobbeltklik på den control du vil implementere kodeviduet popper automatisk frem Denmark .NET Workshop © 2003 Joe Hummel

Step 4 — run mode Kør! 5. WinForms January 2003 Denmark .NET Workshop © 2003 Joe Hummel

Break mode? 5. WinForms January 2003 Igangsættes i denne app eksempelvis ved forkert indtastning… Which is why input validation is so important… Denmark .NET Workshop © 2003 Joe Hummel

Arbejde med Visual Studio 5. WinForms January 2003 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 "All source files must be in the same lang" – what does this mean? In other words, when you create a project in Visual Studio, all the source files in that project must be in the same language — C#, VB, C++, whatever. This implies that if you want to work in different languages at the same time, you must either: use multiple projects in Visual Studio, one per language, or work outside of Visual Studio and create ".netmodules" using the command-line compilers. What's the purpose of the bin sub-directory? It's where the generated assemblies are placed. The obj sub-dir is used for temporary files during compilation. Denmark .NET Workshop © 2003 Joe Hummel

Del 3 WinForms…

WinForms 5. WinForms January 2003 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 Recall that FCL = .NET's Framework Class Library Denmark .NET Workshop © 2003 Joe Hummel

Abstraktion FCL fungerer som abstraktion 5. WinForms January 2003 FCL fungerer som abstraktion adskiller WinForm app fra den underlæggende platform instance of FCL class object System.Windows.Forms.Form CLR Windows OS Denmark .NET Workshop © 2003 Joe Hummel

Form properties 5. WinForms January 2003 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(); Most properties can also be set within Visual Studio via the Properties window (select form, press F4). Denmark .NET Workshop © 2003 Joe Hummel

Form metoder Actions der kan udføres på en form: 5. WinForms January 2003 form.Hide(); . form.Show(); 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 Modal? Dialog boxes are "modal" windows, meaning the user can't switch to other windows in the application — they must complete the "dialog" and dismiss the dialog box before they can work with the application again. Denmark .NET Workshop © 2003 Joe Hummel

Form events Events du kan reagere på: find propertiesvinduet 5. WinForms January 2003 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 When to code these events? Load: to initialize form before user's sees it for the first time Closing: to ask user to save changes before form is closed Closed: to save any data on the form before form is closed Resize: to resize / rearrange controls on form in response to user changing the form's size Click: right-button click to display context-sensitive popup menu KeyPress: implement keyboard shortcuts without having to use menus Denmark .NET Workshop © 2003 Joe Hummel

Eksempel Spørg brugeren før formen lukkes: 5. WinForms January 2003 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; } If the form being closed is the main form (i.e. the first form shown when app starts), then the Closing event represents the closing of the application. Denmark .NET Workshop © 2003 Joe Hummel

Part 4 Controls…

Controls Brugerinterfaceobjekter på formen: labels buttons text boxes 5. WinForms January 2003 Brugerinterfaceobjekter på formen: labels buttons text boxes menus list & combo boxes option buttons check boxes etc. For a basic list, see your toolbox. There are many more "advanced" controls that you can work with; right-click on toolbox, and select "Customize Toolbox…". Denmark .NET Workshop © 2003 Joe Hummel

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

Hvem opretter alle disse objekter? 5. WinForms January 2003 Hvem er ansvarlig for oprettelsen af control-objekter? koden auto-genereres af Visual Studio Efter formobjektet er oprettet oprettes control-objekterne… Obviously, don't modify the auto-generated code :-) Denmark .NET Workshop © 2003 Joe Hummel

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

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

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

Text boxes Mest almindelige control! Til visning af text til data fra eksempelvis db Masser af features…

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

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

Text box hændelser Interesante hændelser: 5. WinForms January 2003 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 Denmark .NET Workshop © 2003 Joe Hummel

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

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?

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

Radio buttons og Check boxes 5. WinForms January 2003 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 Denmark .NET Workshop © 2003 Joe Hummel

Group boxes Visuel gruppering af controls 5. WinForms January 2003 Visuel gruppering af controls Tillader iteration gennem gruppens elementer… foreach (RadioButton rb in this.groupBox1.Controls) if (rb.Checked) MessageBox.Show(rb.Name); Denmark .NET Workshop © 2003 Joe Hummel

List Boxes God til at vise /vedligeholde en liste af data liste af strings liste af object (list box kalder selv ToString()) 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);

Advarsler 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 Noget kode trigger events bagved koden… en naturlig sideeffekt af event-drevet programmering this.textBox1.Text = "new value" // triggers TextChanged

Kun toppen af isbjerget… Menuer, dialoger, toolbars, etc. Tusinder af andre controls .NET and ActiveX højreklik på Toolbox "Customize Toolbox"

Opsamling Event-drevet programmering er meget intuitivt i GUI apps 5. WinForms January 2003 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!!! Denmark .NET Workshop © 2003 Joe Hummel

Referencer Books: S. Lippman, "C# Primer" 5. WinForms January 2003 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) Denmark .NET Workshop © 2003 Joe Hummel