我在 C# WinForms 中有一个 listView1,它显示 2 个列表
List<string> pths;
List<string> rec;
public void Disp ()
{
DisplayListInColumns(listView1, pths, 0);
DisplayListInColumns(listView1, rec, 1);
}
private static void DisplayListInColumns(ListView listView, List<string> values, int columnIndex)
{
for (int index = 0; index < values.Count; index++)
{
while (index >= listView.Items.Count)
{
listView.Items.Add(new ListViewItem());
}
ListViewItem listViewItem = listView.Items[index];
while (listViewItem.SubItems.Count <= columnIndex)
{
listViewItem.SubItems.Add(new ListViewItem.ListViewSubItem());
}
listViewItem.SubItems[columnIndex].Text = values[index];
}
}
我正在使用全局列表进行更改并将其显示在 listview1 中,但只有在用户单击 apply_button 后才会保存更改(保存到 xml)。
编辑和添加详细信息按钮工作正常并且显示完美。但是当我删除数据时,我会抛出一个错误。
以下是删除操作:
//Configuration - DELETE button
private void button6_Click(object sender, EventArgs e)
{
string select = null;
if (listView1.SelectedItems.Count > 0)
{
select = (listView1.SelectedItems[0].Text);
}
int count = listView1.SelectedItems[0].Index;
if (select != null)
{
pths.RemoveAt(count);
rec.RemoveAt(count);
string s = String.Join("; ", pths.ToArray());
string r = String.Join("; ", rec.ToArray());
//MessageBox.Show(s);
//MessageBox.Show(r);
}
Disp();
}
我认为经过几次尝试,我的索引出错了。即使在删除之后,在调试时我listView.Items.Count = 5.
猜我猜计数仍然是 5(列表中的样本 - 5 个字符串),当删除后它应该减少到 4 并且索引相应地减少到 0-3。我收到以下错误
ArgumentOutOfRangeException at pths.RemoveAt(count)
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
作为替代我尝试pths.Remove(select);
但没有解决这个问题。
任何帮助,将不胜感激。谢谢