📜  c# 折叠列表 - C# (1)

📅  最后修改于: 2023-12-03 15:29:47.661000             🧑  作者: Mango

C# 折叠列表

折叠列表是用于在程序中创建易于阅读和导航的层次结构的常见控件之一。在 C# 中,我们可以使用 TreeView 控件来创建折叠列表。

TreeView

TreeView 是 Windows 窗体中的控件之一,用于显示具有层次结构的信息,它由以下几个部分组成:

  • 根节点(Root Node):所有其他节点的起始点。
  • 节点(Node):TreeView 中的每个项目都是一个节点。
  • 子节点(Child Node):一个节点可以拥有无数个子节点,用于将节点分层级别显示。
  • 展开图标(+):显示在父节点旁边,用于将父节点的子节点展开。
  • 折叠图标(-):显示在父节点旁边,用于将父节点的子节点折叠。
创建 TreeView 控件

在 C# 中创建 TreeView 控件的方法很简单,只需添加以下代码即可:

TreeView treeView1 = new TreeView();
添加节点

TreeView 中的每个项目都是一个节点,我们可以使用 TreeNode 类来创建和添加节点:

TreeNode rootNode = new TreeNode("根节点");
treeView1.Nodes.Add(rootNode);

TreeNode childNode1 = new TreeNode("子节点 1");
rootNode.Nodes.Add(childNode1);

TreeNode childNode2 = new TreeNode("子节点 2");
rootNode.Nodes.Add(childNode2);

TreeNode 的第一个参数是节点的文本,其余的参数根据需要添加。

监听事件

我们可以监听多个事件并根据需要执行相应的操作,如下所示:

treeView1.AfterCollapse += TreeView1_AfterCollapse;
treeView1.AfterExpand += TreeView1_AfterExpand;
treeView1.AfterSelect += TreeView1_AfterSelect;

private void TreeView1_AfterCollapse(object sender, TreeViewEventArgs e)
{
    // 当节点折叠后触发此事件
}

private void TreeView1_AfterExpand(object sender, TreeViewEventArgs e)
{
    // 当节点展开后触发此事件
}

private void TreeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
    // 当用户选择了一个节点后触发此事件
}
完整示例
using System.Windows.Forms;

namespace Demo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            TreeView treeView1 = new TreeView();

            TreeNode rootNode = new TreeNode("根节点");
            treeView1.Nodes.Add(rootNode);

            TreeNode childNode1 = new TreeNode("子节点 1");
            rootNode.Nodes.Add(childNode1);

            TreeNode childNode2 = new TreeNode("子节点 2");
            rootNode.Nodes.Add(childNode2);

            this.Controls.Add(treeView1);

            treeView1.AfterCollapse += TreeView1_AfterCollapse;
            treeView1.AfterExpand += TreeView1_AfterExpand;
            treeView1.AfterSelect += TreeView1_AfterSelect;
        }

        private void TreeView1_AfterCollapse(object sender, TreeViewEventArgs e)
        {
            // 当节点折叠后触发此事件
        }

        private void TreeView1_AfterExpand(object sender, TreeViewEventArgs e)
        {
            // 当节点展开后触发此事件
        }

        private void TreeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            // 当用户选择了一个节点后触发此事件
        }
    }
}