1

对不起,错误的标题,我不知道如何描述它。

基本上,我正在阅读来自 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);

然后将 ArrayListposts返回到我的主窗体。我像这样填充 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]. 但是,我无法做到这一点,因为我没有办法post[1]从 CheckedListBox 中获取。

我能想到的唯一方法是循环检查 CheckedListBox 中的每个项目,然后将帖子标题与posts. 如果它们匹配,我可以使用数组索引 like post = posts[index][1]

不过,我一直告诉自己必须有更好的方法来做到这一点。在那儿?

4

1 回答 1

0

直接来自msdn 示例。像这样:

listView1.CheckBoxes = true;
listView1.View = View.Details;

//Set the column headers and populate the columns.
listView1.HeaderStyle = ColumnHeaderStyle.Nonclickable;

ColumnHeader columnHeader1 = new ColumnHeader();
columnHeader1.Text = "Title";
columnHeader1.TextAlign = HorizontalAlignment.Left;
columnHeader1.Width = 146;

listView1.Columns.Add(columnHeader1);

listView1.BeginUpdate();

foreach (ArrayList post in posts)
{
    string[] postArray = new string[] { post[0].ToString() };
    ListViewItem listItem = new ListViewItem(postArray);
    listItem.Tag = post;
    listView1.Items.Add(listItem);
}

//Call EndUpdate when you finish adding items to the ListView.
listView1.EndUpdate();

现在您知道如何post[1]从我猜的 listView 项目中获取了。只需从 Tag 属性中获取即可。但最后我会要求你取消 ArrayLists..

于 2012-08-26T05:56:12.153 回答