代码之家  ›  专栏  ›  技术社区  ›  ivan saron

如何从TreeView中选择文件夹并将文件名显示到列表框C中?

c#
  •  -1
  • ivan saron  · 技术社区  · 7 年前

    TreeView有问题,我从TreeView中选择了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 回复  |  直到 7 年前
        1
  •  0
  •   abberdeen    7 年前

    因为您没有处理TreeView节点选择:

    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);
    }
    

    获取更多: