У меня есть представление списка с двумя группами. Я хочу, чтобы при проверке элемента он переместился во вторую группу, и когда я сниму его, он вернется к первому.Перемещение группы отмеченного элемента в виде списка C#
Вот код, который я пытался до сих пор:
private void lstServices_ItemChecked(Object sender, ItemCheckedEventArgs e)
{
foreach (ListViewItem item in lstServices.Items)
{
if (item.Checked)
{
item.Group = lstServices.Groups[1];
}
else
{
item.Group = lstServices.Groups[0];
}
}
}
Во-первых, я считаю, что глючит. Когда я отмечаю что-то, он имеет тенденцию перемещаться во вторую группу, но когда я отключаю его, он иногда возвращается к первой группе, иногда они просто не хотят отключаться, и я не могу понять, почему.
Во-вторых, я думаю, что это грязный способ сделать это, каждый раз, когда что-то проверяется, я проверяю весь список, а затем двигаюсь соответственно. Я предполагаю, что есть способ обратиться только к элементу, который я только что проверил, но я не могу понять, как это сделать!
Первая быстрая вещь ... тогда вы все петлиете все предметы? Используйте e.Item и измените группу только в элементе listitem, запускающем событие. – Pikoh
Это то, что я хочу, чтобы избавиться от него, но он не был уверен, как это сделать. Когда вы говорите, что используете e.item, вы имеете в виду его изменение следующим образом: private void lstServices_ItemChecked (отправитель объекта, ItemCheckedEventArgs ** e.item **)? Это дает нам ошибку. Я совершенно не знаком? – Coozbiscuit
Не меняйте метод обработчика событий, просто добавьте это: 'ListViewItem item = e.Item; if (item.Checked) ... ' – Pikoh