【问题标题】:InvalidArgument=Value of '0' is not valid for 'index'. Parameter name: indexInvalidArgument=“0”的值对“索引”无效。参数名称:索引
【发布时间】:2013-03-07 06:42:10
【问题描述】:

我有一个自定义类“Person”,其中包含名称、电子邮件等属性。我有一个名为“people”的列表,还有一个 listView,它显示“people”列表中每个项目的名称。

我正在尝试删除用户在 listView 中选择的“人员”项,在 button1.Click 事件中使用以下代码行:

people.RemoveAt(listView1.SelectedItems[0].Index);

但是它在标题中抛出了错误,但是,紧随其后的代码从 listView 中删除了名称,它没有问题:

listView1.Items.Remove(listView1.SelectedItems[0]);

我正在关注此处的教程视频:http://www.youtube.com/watch?v=0ZoDmeAZAD8

非常感谢。

【问题讨论】:

  • 你试过直接.SelectedIndex吗?
  • 请不要在您的问题中添加链接。如果您可以花时间写问题,那么您显然可以发布与您遇到的问题相关的代码
  • 我把回答问题所需的一切都放在了问题中,如果有人想看的话,我还添加了一个代码链接。请提出具体问题,我会从代码中获取您需要知道的任何内容并自己发布,谢谢。
  • @ja72 listView1 没有 SelectedIndex 方法,还是您指的是别的东西?

标签: c# winforms list listview


【解决方案1】:

问题是我在将其从 List 中删除之前将其从 listView1 中删除,因此它找不到我所指的内容并引发错误。

所以我所要做的就是切换这两个(已经切换)

people.RemoveAt(listView1.SelectedItems[0].Index); // removes item from people LIST.
listView1.Items.Remove(listView1.SelectedItems[0]); // removes item/person from LISTVIEW

它有效!谢谢大家,下次我不会在单独的链接中发布所有代码,对不起。

【讨论】:

  • 我不建议保留两个单独的列表,PersonListViewItem 之一,并尝试始终同步它们。我建议对人员列表采取行动并从List<Person> 重新填充列表视图。另外我经常将ListViewItem.Tag属性与它所代表的类链接起来,然后我可以使用列表的IndexOf()方法来查找我必须对哪个索引进行操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-19
相关资源
最近更新 更多