PDA-applikationer med .NET: Lektion 3

Idag:
  • Visual Studio .NET 2003
  • Tillämpningar med .NET Compact Framework

Klicka på startknappen i den lilla mediaspelaren ovan för att lyssna på lektionen. (Man kan behöva vänta en stund på att ljudfilen laddas ner.) Om mediaspelaren inte syns, eller om det inte fungerar av något annat skäl, kan man klicka här för att ladda ner mp3-filen (ca 22 minuter, ca 10 megabyte). Beroende på hur webbläsaren är konfigurerad kan det kräva ett separat mp3-spelarprogram av något slag.

Tänk på att lektionerna ger en översikt och introduktion. Du måste läsa i kursboken och arbeta med övningarna för att tillgodogöra dig kursen!

Bild 1: Kort om Visual Studio .NET 2003

Ett tillägg hösten 2008 (inte med på ljudspåret):

Det finns nyare versioner av Visual Studio .NET, och den senaste heter Visual Studio 2008 (alltså utan ".NET" i namnet). Boken använder Visual Studio .NET 2003 i sina exempel, och det gör även många av exemplen i den här webbkursen, men vi ska använda Visual Studio 2008. Dessutom kan man, om man redan har den installerad, använda Visual Studio 2005. Det mesta fungerar likadant i alla tre versionerna, men ibland kan fönstren se lite olika ut.

Läs mer om Visual Studio 2008 här!

En integrerad programmeringsomgivning med kompilator, editor, debugger, designverktyg mm.

Visual Studio .NET 2003

Bild 2: Emulatorn

Visual Studio .NET 2003 innehåller en PocketPC-emulator, som man kan använda för att provköra sina .NET Compact Framework-program.

Emulatorn i Visual Studio .NET 2003

Bild 3: Riktig handdator

(En bild från lektion 1.) Man kan även installera sitt program på en riktig handdator.

En tillämpning som körs på en riktig handdator

Bild 4: Visual Studio, med emulator och en handdator

(En bild från lektion 1.) Från vänster:

Visual Studio, med emulator och en handdator

Bild 5: MSDN Academic Alliance

Vi laddar hem Visual Studio från Microsofts "MSDN Academic Alliance".

Du måste vara registrerad på kursen, och ha aktiverat den e-post-adress du fått av Örebro universitet.
Det är till den e-post-adressen som webbadressen, och ditt login-namn och ditt lösenord skickas.

Så här ser webbplatsen ut:

Startsidan på MSDN Academic Alliance

Bild 6: Fler program från MSDN Academic Alliance

Från MSDN Academic Alliance kan man ladda hem inte bara Visual Studio, utan även Windows XP.

Programvalssidan på MSDN Academic Alliance

Bild 7-8: Installera Visual Studio .NET 2003

Ett tillägg hösten 2008 (inte med på ljudspåret):

I den här kursen använder vi numera Visual Studio 2008. Ignorera därför vad som står här, och läs mer här om hur man laddar ner, installerar och använder Visual Studio 2008.

Det är möjligt att inledningen av installationen kan variera lite, beroende på hur man gör när man laddar ner Visual Studio (eller får den på annat sätt). Själv fick jag i alla fall en ISO-image som jag brände en cd-skiva av, och på den cd-skivan fanns en självuppackande Zip-fil (560 megabyte), som sen gick att packa upp till en katalog på hårddisken (1248 megabyte), och som sen drog igång installationen.

Installationen av Visual Studio

Installationen av Visual Studio

Bild 9: Installationen börjar

Efter uppackningen av Zip-filen startades installationen automatiskt. Det finns fyra steg i installationen:

Installationen av Visual Studio

Bild 10: Saker som Visual Studio .NET 2003 vill ha ("prerequisites")

Om man inte installerat Microsofts webserverjox (IIS och Front Page) tidigare på datorn, så kan man installera det nu.

Installationen av Visual Studio

Bild 11: Man kan behöva Windows-skivan

Se upp med att man kan behöva ha installationsskivan för Windows 2000 eller Windows XP tillgänglig, för att installera webserverjoxet.

Installationen av Visual Studio

Bild 12: Installationen av själva Visual Studio

Som steg två kommer själva Visual Studio att installeras. Det var ett antal olika fönster som man fick ta sig igenom.

(Jag hade inga dokumentationsskivor, så jag gjorde inte steg 3, och steg 4 fungerade inte på min dator.)

Installationen av Visual Studio

Bild 13: Windows Update

Steg 4 fungerade inte, men vanliga Windows Update laddade ner en del patchar.

Windows Update laddade ner en del rättelser till Visual Studio

Bild 14: Starta Visual Studio

Vi ska prova att skapa ett litet program. Starta Visual Studio.

Vi startar Visual Studio

Bild 15: Visual Studio-fönstret

Så här ser det ut.

Ett enkelt projekt i Visual Studio

Bild 16: Skapa ett projekt

Klicka på File och välj New och Project.

Vi skapar ett nytt projekt

Bild 17: Välj rätt sorts projekt

Det ska vara ett projekt av typen C#-projekt och enligt mallen Smart Device Application, dvs ett handdatorprogram i C#.

Vi väljer att skapa ett projekt för en handdator

Bild 18: Välj målplattform och projekttyp

Välj Pocket PC och Windows Application.

Ett enkelt projekt i Visual Studio

Bild 19: Utvecklingsmiljön

Nu är projektet igång. Notera designverktyget ("designern") till vänster. Dra dit en knapp.

Utvecklingsmiljön i Visual Studio

Bild 20: En knapp

Knappen får namnet "button1".

Ett formulär med en knapp

Bild 21: En knapp till

Knappen får namnet "button2". Man kan ändra storleken på den.

Ett formulär med två knappar

Bild 22: Designern kan generera kod

Dubbelklicka på formulärets namnlist. Man kan växla mellan designverktget och kodfönstret,

C#-koden visas

Bild 23: Kompilera, "deploya" och kör

Enklast att klicka på Start:

Hur man kör programmet

Tillägg till bild 23: Startar programmet inte?

Start betyder "starta debuggern", så programmet körs i debuggern. För att köra debuggen måste man (i alla fall i Windows XP) ha en aktiv nätverksanslutning. Har man inte det står Visual Studio still en stund, och sen får man ett felmeddelande i Output-fönstret.

En lösning är att använda Start Without Debugging. Man kan också installera något som heter "Microsoft Loopback adapter", och som är en "låtsas-nätverksanslutning".

Bild 24: Var ska programmet köras?

Emulator eller riktig handdator? Välj emulatorn.

(Samma dialogbox på sidan 85 i kursboken visar flera olika emulatorer.)

Val av var programmet ska köras

Bild 25: Emulatorn

Emulatorn igång, körande vårt program.

Emulatorn med vårt program

"Bild" 26: Programmet

Designverktyget genererar C#-kod i filen Form1.cs:

    1   using System;
    2   using System.Drawing;
    3   using System.Collections;
    4   using System.Windows.Forms;
    5   using System.Data;
    6   
    7   namespace SmartDeviceApplication1
    8   {
    9           /// 
   10           /// Summary description for Form1.
   11           /// 
   12           public class Form1 : System.Windows.Forms.Form
   13           {
   14                   private System.Windows.Forms.Button button1;
   15                   private System.Windows.Forms.Button button2;
   16                   private System.Windows.Forms.MainMenu mainMenu1;
   17   
   18                   public Form1()
   19                   {
   20                           //
   21                           // Required for Windows Form Designer support
   22                           //
   23                           InitializeComponent();
   24   
   25                           //
   26                           // TODO: Add any constructor code after InitializeComponent call
   27                           //
   28                   }
   29                   /// 
   30                   /// Clean up any resources being used.
   31                   /// 
   32                   protected override void Dispose( bool disposing )
   33                   {
   34                           base.Dispose( disposing );
   35                   }
   36                   #region Windows Form Designer generated code
   37                   /// 
   38                   /// Required method for Designer support - do not modify
   39                   /// the contents of this method with the code editor.
   40                   /// 
   41                   private void InitializeComponent()
   42                   {
   43                           this.mainMenu1 = new System.Windows.Forms.MainMenu();
   44                           this.button1 = new System.Windows.Forms.Button();
   45                           this.button2 = new System.Windows.Forms.Button();
   46                           // 
   47                           // button1
   48                           // 
   49                           this.button1.Location = new System.Drawing.Point(120, 80);
   50                           this.button1.Text = "button1";
   51                           // 
   52                           // button2
   53                           // 
   54                           this.button2.Location = new System.Drawing.Point(88, 120);
   55                           this.button2.Size = new System.Drawing.Size(96, 48);
   56                           this.button2.Text = "button2";
   57                           // 
   58                           // Form1
   59                           // 
   60                           this.Controls.Add(this.button2);
   61                           this.Controls.Add(this.button1);
   62                           this.Menu = this.mainMenu1;
   63                           this.Text = "Form1";
   64                           this.Load += new System.EventHandler(this.Form1_Load);
   65   
   66                   }
   67                   #endregion
   68   
   69                   /// 
   70                   /// The main entry point for the application.
   71                   /// 
   72   
   73                   static void Main() 
   74                   {
   75                           Application.Run(new Form1());
   76                   }
   77   
   78                   private void Form1_Load(object sender, System.EventArgs e)
   79                   {
   80                   
   81                   }
   82           }
   83   }

"Bild" 27: Ett mer avancerat programexempel i boken!

Boken innehåller ett mer avancerat programexempel, som faktiskt gör något, och som visar en del fler finesser både i C# och i Visual Studio. Provkör programexemplet på samma sätt som visas i boken!

Man kan ladda ner exempelkoden från http://www.paulyao.com/cfbook/code, men gör inte det utan mata in den själv genom at följa instruktionerna i boken. Den mesta koden genereras av Designern, så det är inte så mycket att skriva.

Saker att lära sig av exemplet:

  • Klassen System.Windows.Forms.Form
  • Kontroller (engelska: controls) = widgets, dvs knappar mm
  • Att lägga till nya formulär till en applikation
  • Att lägga till nya klasser till en applikation
  • Händelser (engelska: events)
  • Händelsehanterare (engelska: event handlers)
  • Namnrymder (engelska: name spaces)

Läsanvisningar

Den här lektionen motsvaras av kapitel 2, What is a .NET Compact Framework Program?, i kursboken.

Det är själva provkörandet av Visual Studio som är det viktiga här (se avsnittet Programmeringsövningar nedan), men det finns också några frågor som kan användas som instuderingsfrågor:

  1. För att kunna köra ett .NET Compact Framework-program på sin handdator, måste man ha .Net Compact Framework-biblioteken installerade. Varför måste man det?
  2. Hur kan den installationen vara gjord?
  3. Vad är klassen System.Windows.Forms.Form?
  4. I Visual Studio finns Designern (the Designer). Vad används den till?
  5. Designern har två visningslägen eller vyer: designvyn (Design View) och kodvyn (Code View). Vad är det för något, och hur hänger de ihop?
  6. Boken rekommenderar att man låser storleken på fönstret som ens applikation visar (rutan "The Locked Property" på sidan 83). Varför det?
  7. Boken rekommenderar att man testar sin applikation på samma sorts handdator som ens användare senare ska använda. Varför det? Om jag testar min skrivbordsapplikation på en Dell-PC så kan man ju köra den lika bra på en PC från Hewlett-Packard eller Compaq?
  8. Vad är en namnrymd ("namespace")? Hur skiljer sig en namnrymd från en klass?
  9. Designern genererar klasser som bland annat innehåller metoden InitializeComponent. Vad innehåller den metoden? När körs den?
  10. Designern genererar även metoden Main. Vad innehåller den metoden? När körs den?
  11. Några av de vanligaste fönsterkomponenterna (eller "kontrollerna") är knappar, textfält och etiketter. I Java finns klasserna JButton, JTextField och JLabel för detta. Vad heter motsvarande klasser i C#?
  12. Hur placerar C#-programmet ut fönsterkomponenterna i fönstret? Annorlunda uttryckt: Hur bestämmer det vilka som ska vara med, och var de ska vara?
  13. Vad innebär händelsestyrd programmering ("event-driven programming")?
  14. Vad är en händelse ("event")?
  15. Vad är en händelsehanterare ("event handler")?
  16. Precis som i Java har även C# statiska metoder och variabler. De markeras med nyckelordet static? Vad innnebär det att en metod är statisk? Vad innnebär det att en variabel är statisk?
Om du vill skriva svar på instuderingsfrågorna, räcker det för de flesta frågorna med en eller några få meningar.

Programmeringsövningar

Tillägg: Pocket PC 2003 i Visual Studio .NET 2003

Man kan ladda ner ett tillägg till Visual Studio .NET 2003 som gör att man kan skapa program för Pocket PC 2003, som är en nyare version av Pocket PC. Läs mer här! (Behövs inte för Visual Studio 2005.)

Föregående lektion | Lektionslista | Nästa lektion


Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se), 22 augusti 2008