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