【发布时间】:2016-07-02 22:26:59
【问题描述】:
我有一个list view,它有两列:一列用于前缀,另一列用于连接字符串。
例子:
Prefix| Connection string
--------------------------
OR1_ | blablabla
--------------------------
OR2_ | blebleble
--------------------------
OR3_ | blublublu
--------------------------
(对不起临时表,我想会更容易理解)
所以现在每当我从 listView 中删除一个项目时,我都需要重命名所有前缀,所以想象一下,如果我删除第 2 个项目,我最终会得到:
Prefix| Connection string
--------------------------
OR1_ | blablabla
--------------------------
OR3_ | blublublu
--------------------------
但我实际上需要它是 OR1_ 和 OR2_
所以我做了这段代码,当我删除一个项目时:
private void buttonDel_Click(object sender, EventArgs e)
{
if (listViewConnectionStrings.Items.Count == 0) return;
else
{
//Delete the items
foreach (ListViewItem eachItem in listViewConnectionStrings.SelectedItems)
{
Connections.Remove(eachItem.Text);
listViewConnectionStrings.Items.Remove(eachItem);
}
if(listViewConnectionStrings.Items.Count == 0) return;
//Rename the prefixes
int cntItems = listViewConnectionStrings.Items.Count;
for (int i = 0; i <= cntItems; i++)
{
ListViewItem newItem = new ListViewItem();
newItem = listViewConnectionStrings.Items[0];
int newPrefix = i++;
newItem.Text = @"OR" + newPrefix.ToString() + @"_";
}
}
}
当我删除列表中的 first 项目时,最后一个 for 工作正常,它会正确重命名所有其他项目,但如果我在中间或底部删除一个,那么一个这不是第一次所有其他人都得到相同的名字。
我错过了什么,怎么了?
【问题讨论】:
-
您是一次删除多个项目还是只选择了一项? IE的MultiSelect属性设置为true还是false?