C# TreeView控件

2025-02-12  本文已影响0人  技术老小子

摘要


使用 Windows 窗体 TreeView 控件,可以为用户显示节点层次结构,就像在 Windows 操作系统的 Windows 资源管理器功能的左窗格中显示文件和文件夹一样。 树视图中的各个节点可能包含其他节点,称为子节点。 以按展开或折叠的方式显示父节点或包含子节点的节点。 还可以通过将树视图的 CheckBoxes 属性设置为 true 来显示在节点旁边带有复选框的树视图。 然后,通过将节点的 Checked 属性设置为 truefalse,可以采用编程方式来选中或清除节点。

正文


属性

Name 获取或设置控件的名称。
Nodes 获取分配给树视图控件的树节点集合。
ShowLines 获取或设置一个值,用以指示是否在树视图控件中的树节点之间绘制连线。
ShowNodeToolTips 获取或设置一个值,该值指示当鼠标指针悬停在 TreeNode 上时显示工具提示。
ShowPlusMinus 获取或设置一个值,用以指示是否在包含子树节点的树节点旁显示加号 (+) 和减号 (-) 按钮。
ShowRootLines 获取或设置一个值,用以指示是否在树视图根处的树节点之间绘制连线。
Sorted 获取或设置一个值,用以指示树视图中的树节点是否经过排序。
StateImageList 获取或设置图像列表,该列表用于指示 TreeView 及其节点的状态。
TopNode 获取或设置树视图控件中第一个完全可见的树节点。
TreeViewNodeSorter 获取或设置 IComparer 的实现,以对 TreeView 节点执行自定义排序。

方法

CollapseAll() 折叠所有树节点。
Sort() TreeView 控件中的项进行排序。

一个简单的文件显示

image.png

初使化目录

public void Init()
{
    tvMain.ImageList = imageList1;
    string path = @"C:\";
    DirectoryInfo dir = new DirectoryInfo(path);
    foreach (var item in dir.GetDirectories())
    {
        TreeNode node = new TreeNode();
        node.Tag = item.FullName;
        node.Name = item.Name;
        node.Text= item.Name;
        node.ImageIndex = 0;
        tvMain.Nodes.Add(node);
    }
}

载入文件与展开目录

private void tvMain_DoubleClick(object sender, EventArgs e)
{
    //当前选中的节点
    if (tvMain.SelectedNode != null)
    {
        if (tvMain.SelectedNode.Nodes.Count <= 0)
        {
            try
            {
                DirectoryInfo dr = new DirectoryInfo(tvMain.SelectedNode.Tag.ToString());
                foreach (var item in dr.GetDirectories())
                {
                    TreeNode node = new TreeNode();
                    node.Tag = item.FullName;
                    node.Name = item.Name;
                    node.Text = item.Name;
                    node.ImageIndex = 0;
                    tvMain.SelectedNode.Nodes.Add(node);
                    tvMain.SelectedNode.ExpandAll();
                }
            }
            catch
            {

            }
        }
    }
    InitFile(tvMain.SelectedNode.Tag.ToString());
}

private void InitFile(string dir)
{
    lsvMain.Items.Clear();
    DirectoryInfo directory = new DirectoryInfo(dir);
    foreach (var item in directory.GetFiles())
    {
        lsvMain.Items.Add(item.Name, 1);
    }
}

上一篇 下一篇

猜你喜欢

热点阅读