C# ListView中出错:InvalidArgument=的值';0';对';无效;指数';

C# ListView中出错:InvalidArgument=的值';0';对';无效;指数';,c#,winforms,listview,C#,Winforms,Listview,当我第二次在ListView中选择某个项目时,会出现此错误。我试图调试它,当我第二次选择某个项目时,列表\u会回答。SelectedItems.Count为0。为什么? 这是我的密码: private void list_answers_SelectedIndexChanged(object sender, EventArgs e) { ListViewItem t = list_answers.SelectedItems[0];

当我第二次在ListView中选择某个项目时,会出现此错误。我试图调试它,当我第二次选择某个项目时,
列表\u会回答。SelectedItems.Count
为0。为什么? 这是我的密码:

private void list_answers_SelectedIndexChanged(object sender, EventArgs e)
        {
            ListViewItem t = list_answers.SelectedItems[0];
            for (int i = 0; i < tasks.Count; i++)
            {
                if (t.Text == "Question №" + (i + 1))
                {
                    this.ShowOnePanel(i);
                    iter = i;
                    break;
                }
            }
        }
private void list\u answers\u SelectedIndexChanged(对象发送方,事件参数e)
{
ListViewItem t=列表_答案。选择编辑项[0];
for(int i=0;i
更改选择时,ListView将首先取消选择当前行,然后选择新行,因此您将有一个调用,其中SelectedItems将为空

您可以通过添加

if(list_answers.SelectedIndex == -1)
    return;

or

if(list_answers.SelectedItems.Count == 0)
    return;

下面的链接中有关于此问题的详细说明:


如果您只是在listview\u SelectedChangeIndex事件中添加此代码,它将解决问题

 if (finishListView.SelectedItems.Count > 0)
    {
// here your code goes
    }
    else
    {
    return;
    }

否。我的项目由文本和图像组成。首先,图像设置为空。当我对某个问题给出正确答案时,我会为该项目(问题)设置一个图像要将其标记为正确,这很有帮助。我还有一个问题:我有一个函数,当某个问题显示时,该函数是否为ListView?此问题被选中。它与ListBox一起使用,但与ListView不一起使用。private void SelectedQuestion(int number){this.list\u answers.Items[编号].Selected=true;}您确定它没有被选中吗?如果ListView失去焦点,而您没有突出显示该行,则在该行恢复焦点之前,您将不会看到该行已被选中。此外,如果答案有效,请接受它。如果我快速浏览问题,我可以看到正确的“问题”“在ListView中闪烁。但是为什么它没有高亮显示呢?因为您必须在ListView上显式地设置HideSelection=false;)