当我尝试从列表视图更改所选项目时程序崩溃

Program crashes when I try to change my selected item from listview

所以,我有一个列表视图和其中的一些项目。我在变量中保留了对 selected 项的引用,但如果我更改 selected 项,程序就会崩溃。

   private void listView1_SelectedIndexChanged(object sender, System.EventArgs e)
        {
            var prod = (Produs)lvProduse.SelectedItems[0].Tag;
            tb1.Text = prod.Denumire;
            tb2.Text = prod.Pret.ToString();
            tb3.Text = prod.Cantitate.ToString();

        }

我想这是我的问题 (Produs)lvProduse.SelectedItems[0].Tag;。对于第一个项目 I select,程序运行良好,但如果我尝试更改我的 selection,则会出现 System.ArgumentOutOfRangeException 错误。

您在事件处理程序中有一个未处理的异常。

通常,未处理的异常会导致调试器中断并告诉您哪里出了问题。但是 ListView.SelectedIndexChanged 事件有一个错误,您的程序会直接崩溃。

异常是因为当您 select 一个 不同的 项目时,您会得到 2 个事件:

首先,您会收到一个事件,通知您没有 selected

项目

然后,您会收到一个事件,通知您新项目已 selected。

在第一个事件中,当 select 没有条目时,lvProduse.SelectedItems 列表将为空。因此,访问元素 0 将抛出。

您必须通过检查 lvProduse.SelectedItems.Any()(或者 lvProduse.SelectedItems.Count != 0,我现在不确定该列表是否支持 LINQ)来检查一个项目是否完全 selected例如。