当我尝试从列表视图更改所选项目时程序崩溃
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例如。
所以,我有一个列表视图和其中的一些项目。我在变量中保留了对 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例如。