所以,我有一个列表视图和其中的一些项目。我将所选项目的引用保留在变量中,但是如果更改所选项目,则程序将崩溃。
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;。对于第一个项目,我选择的程序运行正常,但是如果尝试更改选择,则会出现System.ArgumentOutOfRangeException错误。
您在事件处理程序中有未处理的异常。
通常,未处理的异常会导致调试器中断并告诉您出了什么问题。但是ListView.SelectedIndexChanged
事件有一个错误,您的程序将完全崩溃。
例外是因为当您选择不同项时,会收到两个事件:
首先,您收到一个通知您未选择任何项目的事件
然后,您会收到一个事件,通知您已选择了新项目。
在第一个事件中,当选择否项目时,lvProduse.SelectedItems
列表将为空。因此,访问元素0将抛出异常。
例如,您必须通过选中lvProduse.SelectedItems.Any()
来检查是否选中了一个项目。