Självstudie: Anpassa en WinForms-app för matematikquiz

I den här serien med fyra självstudier skapar du ett matematiskt test. Testet innehåller fyra slumpmässiga matematiska problem som en testtagare försöker besvara inom en angiven tid.

Den här handledningen visar hur du förbättrar din frågesport genom att rensa standardvärden och genom att anpassa utseendet på kontroller.

I den här sista handledningen lär du dig att:

  • Lägg till händelsehanterare för att rensa standardvärdena för NumericUpDown-kontroll.
  • Anpassa quizet.

Förutsättningar

Den här självstudien bygger på tidigare självstudier, som börjar med Skapa en WinForms-app för matematikquiz. Om du inte har slutfört dessa handledningar, gå igenom dem först.

Lägga till händelsehanterare för kontrollerna NumericUpDown

Frågesporten innehåller NumericUpDown kontroller som testtagarna använder för att ange siffror. När du anger ett svar måste du antingen välja standardvärdet först eller ta bort det värdet manuellt. Genom att lägga till en Enter händelsehanterare kan du göra det enklare att ange svar. Den här koden väljer och rensar det aktuella värdet i varje NumericUpDown-kontroll så fort testtagaren väljer den och börjar ange ett annat värde.

  1. Välj den första NumericUpDown-kontrollen i formuläret. I dialogrutan Egenskaper väljer du ikonen Händelser i verktygsfältet.

    Skärmbild som visar verktygsfältet i dialogrutan Egenskaper. En ikon som innehåller en blixt framhävs.

    Fliken händelser i Egenskaper visar alla händelser som du kan svara på för det objekt som du har valt i formuläret. I det här fallet gäller alla angivna händelser kontrollen NumericUpDown.

  2. Välj händelsen Enter, ange answer_Enteroch välj sedan Enter.

    Skärmbild som visar dialogrutan Egenskaper med händelsen Retur markerad. Metodrutan innehåller answer_Enter.

    Kodredigeraren visas och visar den Enter-händelsehanterare som du skapade för summa av NumericUpDown-kontrollelement.

  3. Lägg till följande kod i metoden för answer_Enter händelsehanterare:

    private void answer_Enter(object sender, EventArgs e)
    {
        // Select the whole answer in the NumericUpDown control.
        NumericUpDown answerBox = sender as NumericUpDown;
    
        if (answerBox != null)
        {
            int lengthOfAnswer = answerBox.Value.ToString().Length;
            answerBox.Select(0, lengthOfAnswer);
        }
    }
    

I den här koden:

  • Den första raden deklarerar metoden. Den innehåller en parameter med namnet sender. I C# är parametern object sender. I Visual Basic är det sender As System.Object. Den här parametern refererar till det objekt vars händelse utlöser, vilket kallas avsändaren. I det här fallet är avsändarobjektet kontrollen NumericUpDown.
  • Den första raden i metoden kastar, eller konverterar, sender från ett generiskt objekt till en NumericUpDown-kontroll. Den raden tilldelar också namnet answerBox- till kontrollen NumericUpDown. Alla NumericUpDown-kontroller i formuläret använder den här metoden, inte bara additionsproblemets kontroll.
  • Nästa rad verifierar om answerBox framgångsrikt har kastats som en NumericUpDown-kontroll.
  • Den första raden i if-instruktionen avgör längden på svaret som för närvarande finns i NumericUpDown-kontrollen.
  • Den andra raden i if-instruktionen använder svarslängden för att välja det aktuella värdet i kontrollen.

När testtagaren väljer kontrollen utlöses den här händelsen av Visual Studio. Den här koden väljer det aktuella svaret. Så snart testtagaren börjar ange ett annat svar rensas det aktuella svaret och ersätts med det nya svaret.

  1. I Windows Forms Designerväljer du additionsproblemets NumericUpDown-kontroll igen.

  2. På sidan Händelser i dialogrutan Egenskaper letar du reda på händelsen Klicka och väljer sedan answer_Enter i den nedrullningsbara menyn. Den här händelsehanteraren är den som du precis har lagt till.

  3. I Windows Forms Designerväljer du undertraktionsproblemets NumericUpDown-kontroll.

  4. På sidan Händelser i dialogrutan Egenskaper letar du reda på händelsen Enter och väljer sedan answer_Enter från rullgardinsmenyn. Den här händelsehanteraren är den som du precis har lagt till. Upprepa det här steget för Klicka på-händelsen.

  5. Upprepa de två föregående stegen för NumericUpDown-kontrollerna för multiplikation och division.

Kör din app

  1. Spara programmet och kör det.

  2. Starta ett test och välj en NumericUpDown-kontroll. Det befintliga värdet väljs automatiskt och rensas sedan när du börjar ange ett annat värde.

    Skärmbild som visar testappen med fyra slumpmässiga matematiska problem. Standardsvaret på det första problemet är valt.

Anpassa din frågesport

I den här sista delen av handledningen utforskar du några sätt att anpassa quizet och utöka det du har lärt dig.

Ändra färg på en etikett

  • Använd egenskapen BackColor för timeLabel kontroll för att göra etiketten röd när bara fem sekunder återstår i ett test.

    timeLabel.BackColor = Color.Red;
    
  • Återställ färgen när testet är över.

Spela upp ett ljud för ett korrekt svar

Ge frågesportstagaren en ledtråd genom att spela upp ett ljud när rätt svar anges i ett NumericUpDown-kontrollfält. Om du vill implementera den här funktionen skriver du en händelsehanterare för varje kontrolls ValueChanged händelse. Den här typen av event utlöses när en testtagare ändrar kontrollens värde.

Nästa steg

Grattis! Du har slutfört den här serien med självstudier. Du har slutfört dessa programmerings- och designuppgifter i Visual Studio IDE:

  • Skapade ett Visual Studio-projekt som använder Windows Forms
  • Etiketter, en knapp och kontroller för NumericUpDown har lagts till
  • Lade till en timer
  • Konfigurera händelsehanterare för dina kontroller
  • Skriven C# eller Visual Basic-kod för att hantera händelserna

Fortsätt att lära dig med en annan handledningsserie om hur du skapar ett parspel.