Итак, у меня есть три списка, и цель - когда пользователь щелкает элемент в одном списке и нажимает кнопку удаления в форме, он удаляет этот элемент, а затем элементы в двух других списках на том же уровне.

Таким образом, удаление пятого элемента списка 1 удаляет пятый элемент списка 2 и 3.

private void btnDelete_Click(object sender, EventArgs e)
{
    lstBox1.Items.Remove(lstBox1.SelectedItem);
    lstBox2.Items.Remove(lstBox2.SelectedItem);
    lstBox3.Items.Remove(lstBox3.SelectedItem);
}

Итак, с тем, что у меня есть до сих пор, он удалит один элемент из списка, но, очевидно, нечего делать с удалением элементов из других списков.

Любые идеи?

-2
Phillip Stone 5 Дек 2019 в 13:53

2 ответа

Если под same level вы имеете в виду индекс, то это легко сделать так:

private void btnDelete_Click(object sender, EventArgs e)
{
    var itemIndex = listBox1.SelectedIndex;
    listBox1.Items.RemoveAt(itemIndex);
    listBox2.Items.RemoveAt(itemIndex);
    listBox3.Items.RemoveAt(itemIndex);
}
2
ThePerplexedOne 5 Дек 2019 в 13:58

Вы можете использовать SelectedIndex вместе с методом RemoveAt:

if (listBox1.SelectedIndex >= 0)
{
    listBox3.Items.RemoveAt(listBox1.SelectedIndex);
    listBox2.Items.RemoveAt(listBox1.SelectedIndex);
    listBox1.Items.RemoveAt(listBox1.SelectedIndex);
}

Вы должны удалить наконец из listBox1, потому что вы читаете индекс из этого списка, если вы не скопируете значение в новую переменную, как показано в примере выше.

0
Bizhan 6 Дек 2019 в 17:19
you must remove lastly from listBox1 because you are reading the index from that listbox., если вы не скопируете значение в новую переменную, как показано в моем примере.
 – 
ThePerplexedOne
5 Дек 2019 в 18:18
@Bizhan: Спасибо за объяснение.
 – 
M. Bauer
6 Дек 2019 в 17:18