【发布时间】:2012-08-20 21:47:31
【问题描述】:
抱歉标题有误,我不知道该怎么形容了。
基本上,我正在阅读来自 Wordpress 博客的 RSS 提要的博客文章,然后将它们添加到 CheckedListBox 控件中。
博客帖子信息(帖子标题和永久链接)存储在ArrayList 中,如下所示:
// Store post data
ArrayList post = new ArrayList();
post.Add(this.nodeItem["title"].InnerText);
post.Add(this.nodeItem["link"].InnerText);
// Store item data in posts list
posts.Add(post);
ArrayList posts 然后返回到我的主窗体。我像这样填充 CheckedListBox:
// Grab the latest posts
this.posts = rssReader.getLatestPosts();
// Loop through them and add to latest posts listbox
foreach (ArrayList post in posts)
{
lbLatestPosts.Items.Add(post[0]);
}
运行后,我的 CheckedListBox 会显示帖子标题。我希望能够根据帖子 URL 解析出信息,如果你记得是 post[1]。但是,我无法做到这一点,因为我无法从 CheckedListBox 中获取 post[1]。
我能想到的唯一方法是循环检查 CheckedListBox 中的每个项目,然后将帖子标题与posts 中的元素进行比较。如果它们匹配,我可以使用数组索引,例如 post = posts[index][1]。
不过,我一直告诉自己必须有更好的方法来做到这一点。有吗?
【问题讨论】:
-
你能想到一个列表视图吗?对于列表视图,每个项目都可以标记为一个对象,在您的情况下为
post,因此现在您可以获得 post[0] 和 post[1]。 -
我需要复选框来选择要从中解析信息的特定帖子。我需要在列表复选框中显示帖子标题,但是当我完成选择帖子并单击“解析”时,我需要知道帖子 URL。有没有办法将项目“标记”到
CheckedListBox中的对象? -
不,没有。但是您可以改为使用选中的列表视图..
-
我选择了 ListView。但是,如何将项目添加为对象?当我这样做时:
lvPostQueue.Items.Add(post);(post是一个对象)我收到一条错误消息,说它无法将其转换为字符串。
标签: c# arraylist checkedlistbox