M.Walker
M.Walker

Reputation: 33

How to take an item out of a list box and another item in a different list box in the same position

I am trying yo create a method that will take a value of one list box and will also be taken out of another list box at the same index. I am just a beginner to C# which is why I am having this problem. Thanks in advance for any help

if (lstCheckoutProduct.)
                {
                    lstCheckoutProduct.Items.Remove(lstCheckoutProduct.SelectedItem);
                    int productIndex = lstCheckoutProduct.Items.IndexOf(lstCheckoutProduct.SelectedIndex);
                    lstCheckoutPrice.Items.Remove(productIndex);
                }
                else
                {
                    lstCheckoutPrice.Items.Remove(lstCheckoutPrice.SelectedItem);
                    int priceIndex = lstCheckoutPrice.Items.IndexOf(lstCheckoutPrice.SelectedIndex);
                    lstCheckoutPrice.Items.Remove(priceIndex);
                }

Upvotes: 0

Views: 34

Answers (1)

René Vogt
René Vogt

Reputation: 43876

You need to get the SelectedIndex before removing the items. Also I assume your first line should check if the listbox is focused

And if you want to remove an item at a specific index you need to use RemoveAt instead of Remove.

if (lstCheckoutProduct.IsFocused)
{
  int productIndex = lstCheckoutProduct.SelectedIndex;
  lstCheckoutProduct.Items.Remove(lstCheckoutProduct.SelectedItem);
  lstCheckoutPrice.Items.RemoveAt(productIndex);
}
else
{
  int priceIndex = lstCheckoutPrice.SelectedIndex;
  lstCheckoutPrice.Items.Remove(lstCheckoutPrice.SelectedItem);
  lstCheckoutProduct.Items.RemoveAt(priceIndex);
}

EDIT: The first line is just a guess as you left it out in your question. Note that IsFocused will be false if the user has clicked a "Remove"-button (and thereby focussed the button instead of the listbox) to call this method.

EDIT: and you can reduce the code to this:

int index = lstCheckoutProduct.IsFocused ? lstCheckoutProduct.SelectedIndex : lstCheckoutPrice.SelectedIndex;
lstCheckoutProduct.Items.RemoveAt(index);
lstCheckoutPrice.Items.RemoveAt(index);

Upvotes: 1

Related Questions