【发布时间】:2011-12-05 15:01:01
【问题描述】:
已解决
奇怪的是,这里发生的事情似乎是 string[] 集合在没有元素时被迭代。因此,每个项目都将从用户列表中删除。添加了额外的检查以确保nicks.Count !=0,它添加并完美运行。当代码做你意想不到的事情时必须爱;)
---[初始问题]---
所以,我在这里有点困惑。
当我们连接到我们的服务器时,我们会得到一个字符串集合结果string[]。然后我们解析该字符串集合,并将名称添加到列表视图。但是,我们还需要解析列表视图,并删除任何未出现在字符串集合中的项目。
我似乎无法找到正确执行此操作的方法。我知道这很容易,但到目前为止我尝试过的任何事情都失败了,这完全不酷:(
将字符串集合过滤到列表视图而不添加重复项的代码:
foreach (var nick in nicks)
{
if (string.IsNullOrEmpty(nick)) continue;
var lvi = new ListViewItem
{
Text = nick,
Group = nick.StartsWith("@") ? listViewEx1.Groups[0] : listViewEx1.Groups[1]
};
if (listViewEx1.Items.Count != 0)
{
var foundItem = listViewEx1.FindItemWithText(nick, true, 0, false);
if (foundItem != null) continue;
}
lvi.ImageIndex = 0;
listViewEx1.Items.Add(lvi);
}
那么,我如何反过来比较列表视图中的项目与字符串集合中的项目,并删除那些不存在的项目?
调试信息
Element in 'nicks': Bot
Element in 'nicks': Test
Element in 'nicks': @Mike
Element in 'nicks': @Jack
Element in 'nicks': Joe
Element in 'nicks': Nancy
Element in 'nicks': Roger
Element in 'nicks':
Does not contain: @Mike
Does not contain: @Jack
Does not contain: Bot
Does not contain: Joe
Does not contain: Test
Does not contain: Nancy
Does not contain: Roger
奇怪的是,即使 nicks[] 集合包含项目,item.Text 包含昵称,.Contains() 调用却不匹配它。
【问题讨论】:
标签: c# winforms string listview collections