2012-12-29 68 views
1

我創建了一個程序,你可以用一個按鈕在richtextbox中放置文本。點擊按鈕後,該文本框中的文本將放置在列表視圖中,每行上都有一個複選框。此列表視圖只有1列。Listview中的子項沒有顯示

現在,我想把一些行作爲一個子項目,並從父母中刪除複選框,就像一棵樹。不過,我目前只看到父母,子項目沒有顯示。我也不知道如何從父母中刪除複選框。

我看到了treeview類,但我不想在每行之前的那些點,我不知道是否可以在其中添加複選框。

這是我的代碼

private void ParseButton_Clicked(object sender, EventArgs e) 
    { 
     string[] entries = rawLogBox.Text.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None); 

     ListViewItem parent = null; 
     foreach (string entry in entries) 
     { 
      if (Regex.IsMatch(entry, "^={10} .* ={10}$")) 
      { 
       parent = new ListViewItem(entry); 
       parsedLogBox.Items.Add(parent); 
      } 
      else 
      { 
       if (parent == null) 
       { 
        parsedLogBox.Items.Add(new ListViewItem(entry)); 
       } 
       else 
       { 
        new ListViewItem.ListViewSubItem(parent, entry); 
       } 
      }     
     } 
     parsedLogBox.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); 
    } 

ListView控件設置爲詳細。

回答

2

您必須添加子項,像這樣:

parent.SubItems.Add(entry) 

又見this so question

編輯:在一個TreeView控制複選框:TreeView Remove CheckBox by some Nodes

+1

同樣的結果,我想這是因爲它增加了他們在同一行的不同列中。但我只有1列,我希望他們每行1個條目。我還希望父母能夠像樹一樣擴大和縮小。 – Aaron

+0

子項目將始終出現在下一列中。也許你可以稍微提高你的問題。標準列表視圖不可能展開和最小化。然而,你可以在樹形視圖中選中複選框,查看我的答案編輯。 – Jobo

+1

我使用樹視圖atm,它更好,但並不完美。我會根據需要改變佈局。我接受你的答案,因爲我不需要更多的幫助。 – Aaron