Сосредоточиться на следующем элементе в ListView после удаления выбранного элемента

Это может быть просто. Когда я удаляю элемент ListView, я хотел бы, чтобы он выбирал элемент, который был выше или ниже него. Если я хочу удалить 5 элементов в списке, я бы хотел просто нажать кнопку удаления 5 раз, а не продолжать выбирать элемент, который я хочу удалить. В этом ListView я не могу разрешить множественный выбор.

    private void removeSelectionButton_Click(object sender, EventArgs e)
    {
        //Remove Selection
        if (listView.SelectedItems.Count > 0)
        {
            listView.SelectedItems[0].Remove();
        }
    }

person Gernatch    schedule 19.02.2015    source источник


Ответы (1)


Вам нужно получить индекс элемента, который вы удаляете, удалить его, а затем установить выбор на элемент рядом с удаленным.

var itemToRemove = listView.SelectedItems[0];
int selectedIndex = listView.Items.IndexOf(itemToRemove);
itemToRemove.Remove();
if (selectedIndex >= listView.Items.Count) selectedIndex--;
listView.Items[selectedIndex].Selected = true;

Возможно, вам потребуется убедиться, что представление списка имеет фокус (вызов listView.Select()), чтобы увидеть выбор, или установить HideSelection на false. Также вы захотите добавить проверку того, был ли удален последний элемент, прежде чем пытаться установить следующий как выбранный.

person Erik    schedule 19.02.2015