如何从树状视图中选择文件夹并在列表框C#中显示文件名?

时间:2018-07-14 11:06:36

标签: c#

我在树视图中遇到问题,即我从树视图中选择了1个文件夹,我的列表框将显示文件夹的文件名

我只能显示第一个文件夹的文件

我要在选择时显示每个文件夹的文件名

我该怎么做?

这是我的代码:

 private void Form1_Load(object sender, EventArgs e)
    {
        //Lấy các Disk trong Explorer
        GetDisk();

     }

    //Get Disk
    public void GetDisk() 
    {
        string[] disk = Directory.GetLogicalDrives();
        for (int i = 0; i < disk.Length; i++)
        {
            tvFolder.Nodes.Add(disk[i]);
            GetFol(disk[i], i);

        }
    }

    //Get Folder 
    public void GetFol(string name, int lv)
    {
        try
        {
            string[] fd = Directory.GetDirectories(name);
            for (int i = 0; i < fd.Length; i++ )
            {
                tvFolder.Nodes[lv].Nodes.Add(fd[i]);
                //Sub Dir
                if (Directory.Exists(fd[i]))
                {
                    tvFolder.Nodes[lv].Nodes.Add("Temp");
                }
            }
            GetFile(name);
        }
        catch //(Exception ex)
        {
            //MessageBox.Show(ex.Message);
        }
    }

    //Get File Function
    public void GetFile(string nameFol)
    {
        string[] strFile = Directory.GetFiles(nameFol);

        for (int i = 0; i < strFile.Length; i++)
        {
            //Get File Image
            string strExtension = strFile[i].Substring(strFile[i].LastIndexOf('.') + 1).ToLower();
            if (strExtension == "jpg" || strExtension == "jpeg" || strExtension == "png" || strExtension == "gif")
            {
                string fileName = Path.GetFileName(strFile[i]);
                lsbImages.Items.Add(strFile[i]);
            }
        }

    }

谢谢!

1 个答案:

答案 0 :(得分:0)

因为您不处理树视图节点选择:

private void Form1_Load(object sender, EventArgs e)
{
    GetDisk();
    tvFolder.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(tvFolder_AfterSelect);
}

//...

private void tvFolder_AfterSelect(object sender, TreeViewEventArgs e)
{
    GetFile(e.Node.Text);
}

获取更多信息: