[c#] Treeview

0

Tworze drzewo katalogów w systemie ale mam problem z wyeliminowaniem plusików [+] takich po których wciśnięciu rozwijają sie dalsze katalogi, gdyż zrobiłem na początku domyślnie ze są w przy kazdym folderze. To mój kod który mi ise wydaje powinien działać. To kwestia jednego warunku ale nie iwem co jest nie tak.

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace WindowsApplication1
{
   public partial class Form1 : Form
   {
       String path;

       public Form1()
       {
           InitializeComponent();
           TreeDisplay();
       }

       private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
       { 
           path = fixPath(e.Node);
           Text = path;
       }

       private void TreeDisplay()
       {
           String[] etykieta = Environment.GetLogicalDrives();
           
           foreach (String d in etykieta)
           {
               TreeNode dysk = new TreeNode(d);
               treeView1.Nodes.Add(dysk);

               //TODO: dodac warunek obslugujacy plusiki gdy sa subdirestorys
               
               dysk.Nodes.Add("");                 
           }
       }

       private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)
       {
           DirectoryInfo katalogi;
           try
           {
               e.Node.Nodes.Clear();                    
               katalogi = new DirectoryInfo(e.Node.FullPath);
               foreach (DirectoryInfo k in katalogi.GetDirectories())
               {
                   TreeNode podkatalogi = new TreeNode(k.Name);
                   e.Node.Nodes.Add(podkatalogi);

                   if(podkatalogi.Nodes.Count ==0)
                   {
                   //todo: warunek dla plusika;)    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

                   podkatalogi.Nodes.Add("");
                   
                   }
               }
           }
           catch (Exception ex)
               {
                   MessageBox.Show(ex.Message);
               }

       }

       private string fixPath(TreeNode node)
       {
           string sRet = "";
           try
           {
               sRet = node.FullPath;
               int index = sRet.IndexOf("\\\\");
               if (index > 1)
               {
                   sRet = node.FullPath.Remove(index, 1);
               }
           }
           catch (Exception doh)
           {
               MessageBox.Show(doh.Message);
           }
           return sRet;
       } 
   }
}
0

ja żeby pozbyć się "plusików" zrobiłem tak:

        private void Fill(TreeNode dirNode)
        {
            try
            {
                DirectoryInfo dir = new DirectoryInfo(dirNode.FullPath);

                foreach (DirectoryInfo dirItem in dir.GetDirectories())
                {
                    //dodanie węzła dla katalogu
                    TreeNode newNode = new TreeNode(dirItem.Name);
                    newNode.ImageIndex = 3;
                    newNode.SelectedImageIndex = 4;
                    dirNode.Nodes.Add(newNode);
                    if ((dirItem.GetDirectories()).Length>0) newNode.Nodes.Add("*");  <-to jest to żeby był lub nie było "plusika"
                }
            }
            catch
            {
            }
        }

nie wiem jak bardzo to "profesjonalny" sposób, ale działa ;-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1