webForumDet fria alternativet

Listbox input ändras inte. Visar bara det som finns i första case i switch satsen

.NET

2 svar · 1 613 visningar · startad av swingman

Medlem sedan jan. 200686 inlägg
Frågan#1

Kan någon tala om för mig vad det är för fel. Jag vill kunna byta innehåll i listboxen lstReservations genom att ändra input i comboxboxen. Där har jag använt enum DisplayOptions
Men när jag kör koden så får jag bara (i listboxen) input för enum All och inte enum Reserved och Vacant. Vad gör jag för fel?

namespace Assignm4a
{
    public partial class MainForm : Form
    {
        public const int reserved = 5;
        public const int vacant = 15;
        public const int rows = 10;
        public const int cols = 5;       
       
        public const int totNumOfSeats = 30;
        public string[,] allSeatsArray = new string[rows, cols];
        public string[] reservedSeatsArray = new string[reserved];
        public string[] vacantSeatsArray = new string[vacant];
               
        public enum DisplayOptions
        { All, Vacant, Reserved}
               
        public MainForm()
        {
            InitializeComponent();
            cmbSeats.DataSource = Enum.GetValues(typeof(DisplayOptions));                       
        }

        private void MainForm_Load(object sender, EventArgs e)
        {
                
        }     

        private void cmbSeats_SelectedIndexChanged(object sender, EventArgs e)
        {
            lstReservations.Items.Clear();           
            DisplayOptions choice = new DisplayOptions();            
            switch (choice)
            {
                case DisplayOptions.All:
                    for (int i = 0; i < rows; i++)
                        for (int j = 0; j < cols; j++)
                    {                      
                        string x = Convert.ToString(i);
                        string y = Convert.ToString(j);
                        allSeatsArray[i,j] = "Seat "+ x +":"+ y;
                        lstReservations.Items.Add(allSeatsArray[i,j]);                       
                    }
                    break;                 
                case DisplayOptions.Reserved:
                    for (int i = 0; i < reserved; i++)
                    {
                        string x = Convert.ToString(i);
                        reservedSeatsArray[i] = x;
                        lstReservations.Items.Add(reservedSeatsArray[i]);
                    }
                    break;
                case DisplayOptions.Vacant:
                    for (int i = 0; i < vacant; i++)
                    {
                        string x = Convert.ToString(i);
                        vacantSeatsArray[i] = x;
                        lstReservations.Items.Add(vacantSeatsArray[i]);
                    }
                    break;          
               }
        }
    }
}
Medlem sedan dec. 2005664 inlägg
#2

Du instansierar en enum varje gång metoden körs och jag antar att All är det första värdet i din enum? Jag antar att du vill kunna ta ut din enum från något och inte skapa en ny varje gång..

Medlem sedan dec. 2004736 inlägg
#3

Byt ut:

DisplayOptions choice = new DisplayOptions();

mot

DisplayOptions choice = (DisplayOptions)cmbSeats.SelectedItem;

i funktionen

private void cmbSeats_SelectedIndexChanged(object sender, EventArgs e)
263 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)