Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Treeview&;之间链接复选框;列表视图?VSC_C#_Visual Studio - Fatal编程技术网

C# 如何在Treeview&;之间链接复选框;列表视图?VSC

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)

我已经创建了TreeView 1 ListView 1, 使它们呈现相同的文件夹结构, 并将复选框设置为true

如何链接它们,以便在一个视图中检查文件或文件夹,在另一个视图中检查相应的文件或文件夹。基本上是镜像的。


我无法通过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;
    }