Det betyder att fönstret inte minimeras när man klickar där, utan det stängs och förstörs. Om det är applikationens huvudfönster, avslutas hela applikationen, i stället för att (som för det mesta) bara minimeras och ligga vilande i bakgrunden. Man får en sån ok-knapp, i stället för ett minimeringskryss, genom att sätta egenskapen MinimizeBox i formuläret till false.
b) (9p)
using System; using System.Drawing; using System.Collections; using System.Windows.Forms; using System.Data; namespace Tenta_1 { ////// Summary description for Form1. /// public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.Label label1; private System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.Button button1; private System.Windows.Forms.Label label2; private System.Windows.Forms.MainMenu mainMenu1; public Form1() { // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // } ////// Clean up any resources being used. /// protected override void Dispose( bool disposing ) { base.Dispose( disposing ); } #region Windows Form Designer generated code ////// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { this.mainMenu1 = new System.Windows.Forms.MainMenu(); this.label1 = new System.Windows.Forms.Label(); this.textBox1 = new System.Windows.Forms.TextBox(); this.button1 = new System.Windows.Forms.Button(); this.label2 = new System.Windows.Forms.Label(); // // label1 // this.label1.Location = new System.Drawing.Point(8, 8); this.label1.Size = new System.Drawing.Size(224, 32); this.label1.Text = "Skriv ett ord i rutan, och tryck sen på knappen!"; // // textBox1 // this.textBox1.Location = new System.Drawing.Point(8, 56); this.textBox1.Size = new System.Drawing.Size(224, 20); this.textBox1.Text = "svampkorg"; // // button1 // this.button1.Location = new System.Drawing.Point(160, 96); this.button1.Text = "Knappen"; this.button1.Click += new System.EventHandler(this.button1_Click); // // label2 // this.label2.Location = new System.Drawing.Point(8, 136); this.label2.Size = new System.Drawing.Size(224, 24); this.label2.Text = "Ordet var: svampkorg"; // // Form1 // this.Controls.Add(this.label2); this.Controls.Add(this.button1); this.Controls.Add(this.textBox1); this.Controls.Add(this.label1); this.Menu = this.mainMenu1; this.MinimizeBox = false; this.Text = "Meningslöshet"; } #endregion ////// The main entry point for the application. /// static void Main() { Application.Run(new Form1()); } private void button1_Click(object sender, System.EventArgs e) { label2.Text = "Ordet var: " + textBox1.Text; } } }
Rättningskommentarer:
Man måste ha en MainMenu för att få en SIP. Annars -1p.
Man måste sätta MinimizeBox till false. Annars -1p.
Man måste ha metoden InitializeComponent, och den måste heta så,
för att koden ska "fungera" i den betydelsen
att det går att redigera formuläret i Designern. Annars -1p.
Rättningskommentarer:
1 poäng för rätt bild, 1 poäng för förklaringen.
En förklaring som handlar om Windows i stället för .NET är fel.
Några nackdelar med emulatorn:
b) (2p)
Vanliga PC-datorer skiljer sig inte så mycket från varandra. Alla har en processor som följer 386-arkitekturen. De har ett tangentbord som ser ungefär likadant ut, och de har en skärm, även om storlek och upplösning på skärmen kan variera lite. De har ett pekdon av något slag, i form av mus, pekplatta eller styrkula.
Men handdatorer skiljer sig mer. Till exempel kan olika handdatorer ha helt olika typ av processor, och ibland kan det finnas processorberoende buggar som man inte märker förrän man provar med just den processortypen.
I handdatorprogram "pressar" man också hårdvaran mer, till exempel när det gäller vad man får plats med på skärmen. Ett vanligt skrivbordsprogram som öppnar ett fönster på skärmen har gott om plats, och det spelar inte så stor roll om man sen kör det på en 1024x768-skärm eller på en 1600x1200-skärm. Det får förmodligen gott och väl plats ändå. Men på handdatorns lilla skärm får man anstränga sig för att trycka in allt man vill få plats med, och om man sen plötsligt kör på en dator där skärmen är en liten aning mindre, så blir det kanske helt oläsligt. Eller om man utnyttjar färger för att visa saker (till exempel batteristatus), och sen kör man på en handdator med en skärm som ser grådaskig ut i dagsljus, så det blir svårt att se vad det egentligen är för färg. Såna problem, och skillnader mellan olika modeller och fabrikat, har man sällan på skrivbordsdatorer.
I den uppkopplade lösningen behövs inte en sådan DataTable-kopia, utan man hämtar respektive sparar direkt i databasen, och uppdaterar databasen kontinuerligt allteftersom programmet ändrar sina lokala data. Man måste alltså ha en stabil uppkoppling mot databashanteraren.
a) (5p)
private void öppnaknappen_Click(object sender, System.EventArgs e) { string filnamnet = filnamnsrutan.Text; if (!File.Exists(filnamnet)) { MessageBox.Show("Filen finns inte."); } else { StreamReader sr = null; try { sr = new StreamReader(filnamnet); redigeringsrutan.Text = sr.ReadToEnd(); } catch (Exception ex) { MessageBox.Show("Det gick inte att öppna filen: " + ex.Message); } finally { if (sr != null) sr.Close(); } } }
b) (5p)
private void sparaknappen_Click(object sender, System.EventArgs e) { string filnamnet = filnamnsrutan.Text; StreamWriter sw = null; try { sw = new StreamWriter(filnamnet); sw.Write(redigeringsrutan.Text); } catch (Exception ex) { MessageBox.Show("Det gick inte att spara: " + ex.Message); } finally { if (sw != null) sw.Close(); } }