C# Windows form1 Skapa en knapp som går fram och bakåt i Quiz

Permalänk
Medlem

C# Windows form1 Skapa en knapp som går fram och bakåt i Quiz

Hej,

Har skapat ett program i C# med trafikfrågor och påträffat ett problem. Vill lägga till en knapp som låter användaren att bläddra igenom frågorna genom att trycka fram respektive bakåt (två knappar ska det vara). Har inte hittat någonting på nätet kring hur man gör detta. Ser endast svar på hur man gör det i webbaserade program och då skriver man This.Goforward(); eller This.Goback(); Kan någon hjälpa mig?

Länkar nedan git:

https://github.com/jonnylv/JL-Trafik

Mvh

Permalänk
Medlem

Du har en variabel vid namn questionNumber som styr vilken fråga du visar just nu. Använd den för att växla mellan de olika frågorna?
T.ex. du har två knappar, en för bakåt och en för framåt. Skapa ett Click-event för Bakåt där du då kör:

private void btnGoBack(object sender, EventArgs e) { questionNumber --; askQuestion(questionNumber); }

För Framåt kör du samma sak, fast du ökar questionNumber istället för att minska.

private void btnGoForward(object sender, EventArgs e) { questionNumber ++; askQuestion(questionNumber); }

Visa signatur

NZXT H510 Flow MSI B450 Tomahawk MAX
AMD Ryzen 5800X3D RX 7900XTX Kingston Fury 64GB
LG C2 42" 4K@120Hz AOC Q27G2U 1440P@144Hz

Permalänk
Medlem
Skrivet av Pamudas:

Du har en variabel vid namn questionNumber som styr vilken fråga du visar just nu. Använd den för att växla mellan de olika frågorna?
T.ex. du har två knappar, en för bakåt och en för framåt. Skapa ett Click-event för Bakåt där du då kör:

private void btnGoBack(object sender, EventArgs e) { questionNumber --; askQuestion(questionNumber); }

För Framåt kör du samma sak, fast du ökar questionNumber istället för att minska.

private void btnGoForward(object sender, EventArgs e) { questionNumber ++; askQuestion(questionNumber); }

Tack så hemskt mycket! Funkade hur bra som helst. Hade letat överallt på nätet men inget som hjälpte. Vill även fråga dig om du vet hur man skapar någon slags label för att kunna visa vilken fråga man befinner sig på.

Permalänk
Medlem
Skrivet av Kreen:

Tack så hemskt mycket! Funkade hur bra som helst. Hade letat överallt på nätet men inget som hjälpte. Vill även fråga dig om du vet hur man skapar någon slags label för att kunna visa vilken fråga man befinner sig på.

Svårt att googla på något specifikt till sitt egna projekt, då får man helt enkelt sätta sig ner och se över koden

För din fråga:
Skapa en Label som du sedan ändrar .Text på när du visar en fråga i funktionen askQuestion
T.ex:

private void askQuestion(int qnum) { lblCurrentQuestion.Text = $"Visar fråga {qnum}"; switch(qnum) ...

Visa signatur

NZXT H510 Flow MSI B450 Tomahawk MAX
AMD Ryzen 5800X3D RX 7900XTX Kingston Fury 64GB
LG C2 42" 4K@120Hz AOC Q27G2U 1440P@144Hz

Permalänk
Medlem
Skrivet av Pamudas:

Svårt att googla på något specifikt till sitt egna projekt, då får man helt enkelt sätta sig ner och se över koden

För din fråga:
Skapa en Label som du sedan ändrar .Text på när du visar en fråga i funktionen askQuestion
T.ex:

private void askQuestion(int qnum) { lblCurrentQuestion.Text = $"Visar fråga {qnum}"; switch(qnum) ...

Hmm förstod inte riktigt där. Kan du snälla förklara det lite tydligare.

Permalänk
Medlem
Skrivet av Pamudas:

Svårt att googla på något specifikt till sitt egna projekt, då får man helt enkelt sätta sig ner och se över koden

För din fråga:
Skapa en Label som du sedan ändrar .Text på när du visar en fråga i funktionen askQuestion
T.ex:

private void askQuestion(int qnum) { lblCurrentQuestion.Text = $"Visar fråga {qnum}"; switch(qnum) ...

Strunta det jag skrev ovan. Funkade utmärkt. Problemet var att jag inte såg vart någonstans lblCurrentQuestion skulle vara. Såg precis att du skrev askQuestion(int qnum) så nu funkar allt bra. Tack för hjälpen

Permalänk
Medlem
Skrivet av Pamudas:

Svårt att googla på något specifikt till sitt egna projekt, då får man helt enkelt sätta sig ner och se över koden

För din fråga:
Skapa en Label som du sedan ändrar .Text på när du visar en fråga i funktionen askQuestion
T.ex:

private void askQuestion(int qnum) { lblCurrentQuestion.Text = $"Visar fråga {qnum}"; switch(qnum) ...

Har påträffat ett problem med detta. Om man trycker föregående (tillbaka) innan man börjat så går den från 0 till - 1, 2, 3 osv. Hur kan man förhindra detta?

Permalänk
Medlem
Skrivet av Kreen:

Har påträffat ett problem med detta. Om man trycker föregående (tillbaka) innan man börjat så går den från 0 till - 1, 2, 3 osv. Hur kan man förhindra detta?

Du behöver kolla om qnum är inom dina gränser, d.v.s. om första frågan börjar på 1, får inte qnum vara mindre än detta. Passa på att se till så qnum även är mindre eller lika med antal frågor

// Kolla om qnum är mindre än 1.. om ja, avbryt funktionen. if(qnum < 1) return; ... lblCurrentQuestion = ... ...

Visa signatur

NZXT H510 Flow MSI B450 Tomahawk MAX
AMD Ryzen 5800X3D RX 7900XTX Kingston Fury 64GB
LG C2 42" 4K@120Hz AOC Q27G2U 1440P@144Hz