Search code examples
c#listboxpanel

Panel change from ListBox


edit edit: I figured out the issue. We were putting the : inbetween the case and the value, it needed to be after. example: case "General" :

Thanks for your time and input everyone.

Original:

This has to be a lot more simple than I'm attempting to make it. Simply I have a listbox with say...6 different "items"(General/oSnaps/blah/blah/blah), when someone clicks one of the items in the listbox, I want it to change Panels. I have 6 different Panels(panel1,panel2,etc) stacked on top of each other, on load only the first one set to visible.

I'm sure it's just a matter of setting which Panel is visible, but how do I actually link that to the "items" in the listbox? SelectedIndexChanged is the answer I presume, but I'm very very new to programming.

MSDN only demonstrates how to switch between items in different listbox's.

Any help would be appreciated.

Edit: here's my current code

private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e) {

           string curItem = listBox1.SelectedItem.ToString(); 

           curItem = listBox1.SelectedItem.ToString(); 
            MessageBox.Show(curItem);

           switch(curItem)
        {
        case : "General"   //error here is: Only assignment, call,increment,await,and new object expressions can be used as a statement
        panel1.Visible = false;
        panel2.Visible = true;
        break;
        case : "E-Snaps" // same as above
        panel2.Visible = false;
        panel3.Visible = true;
        break;
        case : "blah" // same as above
        panel3.Visible = false;
        panel4.Visible = true;
        }
        }

Clicking on the different items in the listBox does bring up a message box with the correct content(General/E-Snaps/blah/etc). So it's reading it obviously, how do we make it switch panels now?

Shouldn't I be able to do something like this also?

private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e) {

           string curItem = listBox1.SelectedItem.ToString();

           curItem = listBox1.SelectedItem.ToString();

            if curItem = "General"
            {
                panel1.Visible = true;
            }

}

Not that I can get either to work...but it seems logical. If I could get some form of string/bool conversion going...


Solution

  • you could start by using a switch statement on the selectedindex changed

    so it would look like this

    private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
    {
        // Get the currently selected item in the ListBox. 
        string curItem = listBox1.SelectedItem.ToString();
    
        switch(curItem)
        {
            case "blah": 
                panel1.visible = false;
                panel2.visible = true;
                break;
            case "blah": 
                panel2.visible = false;
                panel3.visible = true;
                break;
            case "blah": 
                panel3.visible = false;
                panel4.visible = true;
                break;
        }
    }
    

    and so on, I hope this helps

    Explanation : "blah" is what ever value you want to eval so if I was doing fruits

    "blah" would = apple or bannana or pineapple etc