C #: проблема с выбором различных элементов после использования ListView.SelectedItems [0] - PullRequest
1 голос
/ 03 мая 2009

У меня проблема, я использую метод в listview ListView.SelectedItems [0], чтобы вернуть текущий выбранный ListViewItem в аргумент функции, которая отображает текст элемента в текстовое поле при выборе. Этот метод устанавливается на событие Listview_SelectedIndexChanged. Проблема в том, что, когда я выбрал другой элемент сейчас, после того, как он уже был выбран ранее, появляется ошибка, которая гласит:

ArgumentOutOfRangeException был не обработан InvalidArgument = значение '0' недопустимо для 'index' Имя параметра: индекс

Почему это вызывает эту ошибку, когда я хочу вернуть следующий выбранный в данный момент элемент из моего списка? Это происходит только после выбора другого элемента после предварительного выбора.

Вот событие:

    private void lvMyItems_SelectedIndexChanged(object sender, EventArgs e)
    {
        // Return currently selected item.
        ShowItem(lvMyItems.SelectedItems[0]); // The error occurs here.
    }

А вот метод, который он вызывает:

    private void ShowItem(ListViewItem MyItem)
    {
        // This method inputs the text and subitem text of my listview item into two textboxes.
        txtItemName.Text = MyItem.Text;
        txtItemNickName.Text = MyItem.SubItems[1].Text;
    }

Ответы [ 2 ]

4 голосов
/ 03 мая 2009

«Нет выбора» также возможное состояние. Убедитесь, что SelectedItems.Count >= 1, прежде чем получить доступ к элементу с индексом 0.

1 голос
/ 03 июня 2012

Эта проблема возникает, когда я нажимаю на элемент во второй раз.

Первый щелчок работает нормально, но второй щелчок приводит к исключению. Я думаю, это потому, что когда мы щелкаем другой элемент, программа очищает «статус выбора» для первого элемента и помечает второй элемент как «выбранный». Прежде чем пометить второй элемент как «выбранный», программа будет находиться в состоянии, когда в ListView нет элемента выбора, и именно поэтому (наиболее вероятно) программа генерирует исключение.

Итак, нам нужно проверить, что SelectedItems.Count >= 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...