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 24 minuter, ca 11 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 (viktigast!) arbeta med övningarna för att tillgodogöra dig kursen. Bild 1: Fönster = formulär = System.Windows.Forms.Form Ett sånt fönster i emulatorn. (Det här är också exempelprogrammet som används i kapitel 5 i boken.) Bild 2: Samma fönster när man kör programmet på skrivbordet .NET Compact Framework är en delmängd ("greatest hits", som de skriver i boken) av .NET Framework. Man kan köra sitt Pocket PC-program i vanliga Windows. Leta rätt på den kompilerade, körbara filen (till exempel C:\Documents and Settings\Padrone\My Documents\Visual Studio Projects\Väderexemplet\bin\Debug\Väderexemplet.exe) och dubbelklicka på den! Nu syns det tydligare att det är ett vanligt fönster: "Bild" 3: Några fakta om fönstren i Pocket PC Klassen System.Windows.Forms.Form beskriver fönster. Man skapar en egen klass, som ärver från klassen Form. Placera ut knappar och andra kontroller, typiskt med hjälp av Designern. Man instansierar den klassen, dvs skapar ett objekt, och det är det som är själva fönstret. Alltid maximerat, dvs fyller hela skärmen på handdatorn. Därför ser man bara ett fönster i taget. Bild(er) 4: Att stänga och minimera fönster I skrivbords-Windows kan man flytta runt fönster, ändra storlek, låta dem överlappa, med mera. I Pocket PC kan man bara antingen Minimera = gömma undan, eller Stänga = förstöra Vilket av dem som man kan göra beror på fönstret. Skillnaden syns i övre högra hörnet: "Bild" 5: En gång till: man kan stänga och minimera! Kom ihåg: x = minimera = gömma undan = _ i skrivbords-Windows ok = stänga = förstöra = x i skrivbords-Windows "Bild" 6: Programmen avslutas inte - de bara minimeras En Pocket PC-handdator, och de enskilda programmen: Som en radio eller en TV! Inte som en dator! Programmet minimeras (göms undan), det stängs (avslutas) inte. "Bild" 7: Huvudfönstret och andra fönster Ett Pocket PC-program har: Ett huvudfönster. Noll, ett eller flera andra fönster. Om huvudfönstret: Kan bara minimeras, inte stängas. (Kom ihåg: Som en TV, inte som en dator!) x-knappen i övre högra hörnet minimerar fönstret. Om fönstret förstörs, till exempel från ett särskilt Avsluta-menyval, avslutas programmet. De andra "under"-fönstren: Skapas och öppnas av programmet medan det körs, t ex dialog- och informationsrutor. Döljer programmets huvudfönster, och alla andra fönster. En del av dessa kan bara stängas, varvid de förstörs. ok-knappen i övre högra hörnet stänger fönstret. En del av dessa kan minimeras, varvid de göms undan (men finns kvar). x-knappen i övre högra hörnet minimerar fönstret. Då får man inte tappa bort dem! Bild 8: Egenskapen MinimizeBox Egenskapen MinimizeBox styr vad man kan göra med fönstret. Högerklicka på formuläret i fönstret, välj Properties, och leta reda på MinimizeBox. Ändra till False. Nu ändras minimeringsboxen till en stängningsbox (x ändras till ok). Bild 9: Minimerade program = dolda program Huvudfönster som minimeras gör att programmet ligger i bakgrunden, men kan fås fram om man "startar samma program på nytt"! Man kan titta på vilka program som körs just nu på handdatorn. Där finns även de minimerade programmen med: Bild 10: Ett exempel med "borttappade" eller "övergivna" fönster "Under"-fönster (dvs inte huvudfönster) ska man inte minimera hur som helst. Antingen stäng dem, eller håll reda på dem på något sätt. Vi lägger till en hanterare för när användaren klickar på knappen Tryck: "Bild" 11: Programkoden för knapp-klick-händelse-hanteraren Metoden skapas av designverktyget, men de två raderna inuti skriver vi dit själva. Vad är det för fel på det här? private void bPressure_Click(object sender, System.EventArgs e) { FormPressure tryckfönstret = new FormPressure(); tryckfönstret.Show(); } Bild 12: Tryckfönstret i emulatorn, med MinimizeBox = True Notera minimeringsboxen (x:et). Bild 13: Tryckfönstret på skrivbordet, med MinimizeBox = True Bild 14: Kör programmet på skrivbordet Nu syns det att det blir en hel massa tryckfönster! Ett nytt skapas varje gång man klickar på knappen Tryck. Bild 15: Tryckfönstret i emulatorn, med MinimizeBox = False Ändra egenskapen MinimizeBox till False, så fönstret inte kan minimeras utan bara stängas. Bild 16: Tryckfönstret på skrivbordet, med MinimizeBox = False Läsanvisningar Den här lektionen motsvaras av kapitel 5, Creating Forms, i kursboken. Avsnittet Inheritance and Visual Inheritance (s 294-302) är intressant och bra att kunna, men ingår inte i den här kursen. Här är några frågor som kan användas som instuderingsfrågor: Vad är det för skillnad på att stänga och minimera ett fönster i Pocket PC? Hur anger man om ett fönster ska gå att stänga respektive minimera? Hur skiljer sig det där med att stänga och minimera fönster på Pocket PC jämfört med vanliga skrivbords-Windows? Vad står förkortningen PME för? Vad är en egenskap (på engelska "property")? Vad är en metod (på engelska "method")? Vad är en händelse (på engelska "event")? Hittills i kursen har jag nämnt egenskaperna Locked och MinimizeBox i klassen System.Windows.Forms.Form. Nämn någon mer egenskap i den klassen som du tror du kommer att ha nytta av! Till vad? Vad gör metoderna Show och ShowDialog? Hur skiljer de sig? varför har man två olika? Metoden Close stänger ett fönster. Vad händer med fönstret och dess kontroller (dvs knappar mm) när man stänger det? Vad är en tråd (engelska: "thread")? Hur startar man en tråd i C#? Ibland vill man göra saker som tar lång tid, till exempel skapa komplicerade fönster eller koppla upp sig via Internet, som svar på att användaren klickar på en knapp. Boken rekommenderar att man då inte gör allt det jobbet i hanterarmetoden, utan startar en egen tråd för det. Varför? 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 Gå igenom avsnittet The Weather Sample Application (s 283-290) och provkör exemplet med väderprogrammet, inklusive varianten med de borttappade fönstren. Man kan ladda ner exempelkoden, men gör inte det, utan mata in den själv genom att följa instruktionerna i boken. Föregående lektion | Lektionslista | Nästa lektion Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se), 23 oktober 2005
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 24 minuter, ca 11 megabyte). Beroende på hur webbläsaren är konfigurerad kan det kräva ett separat mp3-spelarprogram av något slag.
(Det här är också exempelprogrammet som används i kapitel 5 i boken.)
Leta rätt på den kompilerade, körbara filen (till exempel C:\Documents and Settings\Padrone\My Documents\Visual Studio Projects\Väderexemplet\bin\Debug\Väderexemplet.exe) och dubbelklicka på den!
Nu syns det tydligare att det är ett vanligt fönster:
I Pocket PC kan man bara antingen
Vilket av dem som man kan göra beror på fönstret. Skillnaden syns i övre högra hörnet:
Högerklicka på formuläret i fönstret, välj Properties, och leta reda på MinimizeBox. Ändra till False. Nu ändras minimeringsboxen till en stängningsbox (x ändras till ok).
Man kan titta på vilka program som körs just nu på handdatorn. Där finns även de minimerade programmen med:
Vi lägger till en hanterare för när användaren klickar på knappen Tryck:
Vad är det för fel på det här?
private void bPressure_Click(object sender, System.EventArgs e) { FormPressure tryckfönstret = new FormPressure(); tryckfönstret.Show(); }
Avsnittet Inheritance and Visual Inheritance (s 294-302) är intressant och bra att kunna, men ingår inte i den här kursen.
Här är några frågor som kan användas som instuderingsfrågor:
Föregående lektion | Lektionslista | Nästa lektion