2012-08-25 52 views
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); 

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]

雖然我一直告訴自己必須有更好的方法來做到這一點。在那兒?

+0

你能想到一個列表視圖嗎?對於listview,每個項目都可以標記爲一個對象,在你的情況'post'中,現在你可以同時得到post [0]和post [1]。 – nawfal

+0

雖然我需要複選框來選擇特定的帖子來解析信息。我需要在列表中顯示帖子標題複選框,但是當我完成選擇帖子並單擊「解析」時,我需要知道帖子URL。有沒有辦法將一個項目「標記」到「CheckedListBox」中的對象? –

+0

不,沒有。但你可以使用一個選中的列表視圖.. – nawfal

回答

0

直接從msdn example。就像這樣:

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(); 

現在你知道如何從ListView項我想post[1] ..從Tag屬性剛剛獲得。但最終我會要求你廢除ArrayLists ..