ListView移动项的问题
我想实现ListView中,遍历一项,如果文本不相同就移除,如果相同就不移除我代码如下,怎么不行呢?
--------------------编程问答-------------------- 似乎觉得您只是实例化了LV来过滤已有ListView的重复项.如果真是如此,那您可以通过其他方法来过滤重复.
ListViewItem lv = new ListViewItem();
lv = listView1.Items[listView1.FocusedItem.Index];
int ind = listView1.FocusedItem.Index;
string billno = lv.SubItems[1].Text.Trim();//点击任一项,取出一个文件字符Billno
for (int x = 0; x < listView1.Items.Count;x++ )
{
if (listView1.Items[x].SubItems[1].Text.Trim() != billno)//如果不同就移除这行
{
listView1.Items.Remove(listView1.Items[x]);
}
}
当然,如果您是需要"点击某项后再过滤",那么您的代码中:
listView1.FocusedItem.Index;
或许可以改成:
ListView1.SelectedItems(0).Index; --------------------编程问答-------------------- - -!是从数据库添加进LISTVIEW的话!~添加的时候直接做判断就好了……这样好像挺复杂的!新手路过…… --------------------编程问答-------------------- 看不懂你的代码。 --------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- 看不太明白。没明白意思。 --------------------编程问答-------------------- 楼主,安全移除的办法是,从最后往最前遍历,而不是从小到大……楼主体会一下…… --------------------编程问答-------------------- 代码改错:
ListViewItem lv = listView1.FocusedItem;
int ind = listView1.FocusedItem.Index;
string billno = lv.SubItems[1].Text.Trim();//点击任一项,取出一个文件字符Billno
for (int x = 0; x < listView1.Items.Count;x++ )
{
if (listView1.Items[x].SubItems[1].Text.Trim() != billno)//如果不同就移除这行
{
listView1.Items.Remove(listView1.Items[x]);
x--;
}
}
--------------------编程问答-------------------- 顶一下
--------------------编程问答-------------------- 在遍历集合时移除元素是有问题的. 可以在遍历ListView时将符合条件的项保存到一个数组,然后遍历该数组,从ListView中移除元素. --------------------编程问答--------------------
用foreach遍历确实是需要这样处理
如果用for遍历,就要按7楼方式处理,关键就是x--;那一句 --------------------编程问答--------------------
从小往大移除的时候,Index会发生变化,另外Count也会发生变化。
ListViewItem lv = new ListViewItem();
lv = listView1.Items[listView1.FocusedItem.Index];
int ind = listView1.FocusedItem.Index;
string billno = lv.SubItems[1].Text.Trim();//点击任一项,取出一个文件字符Billno
int count = listView1.Items.Count;
for (int x = count-1; x >=0;x-- )
{
//移除代码。
}
--------------------编程问答-------------------- 帮你顶。
补充:.NET技术 , C#