2015-09-01 3 views
0

Я создал treeView1 listView1, сделал их одинаковой структурой папок, и установил флажки в true.Как связать флажки между Treeview & Listview? VSC

Как связать их, проверяя файл или папку в одном представлении, проверяет соответствующий файл или папку на другом. По сути, они отражают их.

Я не могу найти решение через библиотеку google/microsoft.

ответ

0

Хитрость заключается в создании соединения между узлами и элементами.

Давайте предположим, что вы можете использовать Tags обоих ..

Здесь я заполняю два элемента управления:

private void button1_Click(object sender, EventArgs e) 
    { 
     listView1.Columns.Add("No"); 
     listView1.View = View.Details; 

     for (int i = 0; i < 9; i++) 
     { 
      // keep a temporary reference of the new nodes/items.. 
      ListViewItem lvi = listView1.Items.Add("Item " + i); 
      TreeNode tn = treeView1.Nodes.Add("Item " + i); 
      // ..and store them in the respective tags: 
      lvi.Tag = tn; 
      tn.Tag = lvi; 
     } 
    } 

Теперь sych'ing их легко:

private void treeView1_AfterCheck(object sender, TreeViewEventArgs e) 
    { 
     if (e.Node.Tag != null) 
      ((ListViewItem)(e.Node.Tag)).Checked = e.Node.Checked; 
    } 

    private void listView1_ItemChecked(object sender, ItemCheckedEventArgs e) 
    { 
     if (e.Item.Tag != null) 
      ((TreeNode)(e.Item.Tag)).Checked = e.Item.Checked; 
    } 

Больше сложные правила, такие как проверка суб-узлов, должны быть определены сначала, а затем, как обычно, в дереве, вам придется написать рекурсивную функцию.