Как взять элемент из списка и другой элемент в другом списке в той же позиции

Я пытаюсь создать метод, который будет принимать значение одного списка, а также будет взят из другого списка по тому же индексу. Я только новичок в С#, поэтому у меня возникла эта проблема. Заранее благодарю за любую помощь

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);
                }

person M.Walker    schedule 01.12.2015    source источник
comment
Должен ли ваш первый оператор if проверять наличие выбранного элемента? Просто заканчивается точкой   -  person n1ff    schedule 01.12.2015
comment
lstCheckoutPrice.Items.IndexOf(lstCheckoutPrice.SelectedIndex) Почему?   -  person Broots Waymb    schedule 01.12.2015
comment
Также в вашем else я думаю, что вы должны удалить из lstCheckoutProduct.items вместо lstCheckoutPrice.items   -  person n1ff    schedule 01.12.2015
comment
Я использовал выбранный индекс, так как думал, что если я получу позицию продукта, то цена будет в том же индексе, только в другом списке, поэтому я мог его найти.   -  person M.Walker    schedule 01.12.2015
comment
@ М.Уокер, вам не нужно пытаться делать и IndexOf, и SelectedIndex. SelectedIndex достаточно.   -  person Broots Waymb    schedule 01.12.2015


Ответы (1)


Вам необходимо получить SelectedIndex перед удалением элементов. Также я предполагаю, что ваша первая строка должна проверять, сфокусирован ли список

И если вы хотите удалить элемент по определенному индексу, вам нужно использовать RemoveAt вместо Удалить.

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);
}

РЕДАКТИРОВАТЬ: первая строка - это просто предположение, поскольку вы не указали ее в своем вопросе. Обратите внимание, что IsFocused будет false, если пользователь нажал кнопку «Удалить» (и, таким образом, сфокусировал кнопку вместо списка) для вызова этого метода.

РЕДАКТИРОВАТЬ: и вы можете сократить код до этого:

int index = lstCheckoutProduct.IsFocused ? lstCheckoutProduct.SelectedIndex : lstCheckoutPrice.SelectedIndex;
lstCheckoutProduct.Items.RemoveAt(index);
lstCheckoutPrice.Items.RemoveAt(index);
person René Vogt    schedule 01.12.2015