While loop driller
Hey eksperter!Jeg er i øjeblikket ved at skrive en "book-sæder-i-biograf" i C# (ASP.NET), men jeg har et lille problem med mine select og deselect seats funktioner.
For at give jer et bedre overblik har jeg taget et screenshot af, hvordan det ser ud på sitet:
http://www.bo-mortensen.dk/buttons.JPG
Som I kan se, så er alle de sæder der er røde, optagede og kan derfor ikke vælges. De grønne sæder er dem der er frie og kan vælges. De gule er dem jeg lige har valgt.
I får lige lidt kode at kigge på, så beskriver jeg problemet nedenunder.
// Liste med de valgte Seat objekter
private static List<Seat> selectedSeats = new List<Seat>();
// Eventhandler til at vælge/fravælge sæder ud fra knappens farve
public void button_evt(object sender, EventArgs e)
{
Button b = (Button)sender;
if (b.BackColor != Color.Red) // The seat cant be taken
{
if (b.BackColor == Color.Yellow) // Deselect seat
{
b.BackColor = Color.Green;
Deselect(b);
}
else
{
b.BackColor = Color.Yellow; // Select seat
Select(b);
}
}
}
// Metode til at fravælge(slette) Seat objekter i selectedSeats listen
private void Deselect(Button b)
{
int i = 0;
bool found = false;
while(!found && i < selectedSeats.Count)
{
int theSeatNumber = selectedSeats[i].SeatNumber;
if (selectedSeats[i].SeatNumber == Convert.ToInt32(b.ID))
{
found = true;
selectedSeats.RemoveAt(i);
}
else
{
Console.WriteLine("Fejl");
}
}
}
// Metode til at tilføje det valgte Seat objekt til selectedSeats listen
private void Select(Button b)
{
selectedSeats.Add(new Seat(Convert.ToInt32(b.ID), false));
}
Problemet er, at når jeg vælger flere sæder, som på billedet - og jeg derefter fravælger et af dem, så står sitet bare og "venter", somom det while-loopet kører uendeligt. Vælger jeg derimod kun 1 sæde og derefter deselecter det, så fungerer det fint. Yderligere, hvis jeg vælger flere sæder og deselecter det første sæde jeg valgte, så bliver det også fravalgt.
Det vil altså sige, at mit while loop kun kigger på det første element i listen og hvis det ikke stemmer overens med det nummer knappen har, så failer det. Men hvorfor?
Håber jeg har beskrevet problemet godt nok, ellers må I lige sige til :)
På forhånd tak for hjælpen.
Mvh. Bo