C# 如何在Treeview&;之间链接复选框;列表视图?VSC
我已经创建了TreeView 1 ListView 1, 使它们呈现相同的文件夹结构, 并将复选框设置为true 如何链接它们,以便在一个视图中检查文件或文件夹,在另一个视图中检查相应的文件或文件夹。基本上是镜像的。C# 如何在Treeview&;之间链接复选框;列表视图?VSC,c#,visual-studio,C#,Visual Studio,我已经创建了TreeView 1 ListView 1, 使它们呈现相同的文件夹结构, 并将复选框设置为true 如何链接它们,以便在一个视图中检查文件或文件夹,在另一个视图中检查相应的文件或文件夹。基本上是镜像的。 我无法通过google/microsoft library找到解决方案。诀窍是在节点和项目之间创建连接 假设您可以同时使用这两个标签的标记 在这里,我填充两个控件: private void button1_Click(object sender, EventArgs e)
我无法通过google/microsoft library找到解决方案。诀窍是在节点和项目之间创建连接 假设您可以同时使用这两个标签的
标记
在这里,我填充两个控件:
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;
}
}
任何更复杂的规则,如检查子节点,都必须首先定义,然后,像树中通常那样,必须编写递归函数
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;
}