Здравствуйте знатоки программирования под Autocad.
Появилась интересная задача сделать скрипт обхода директории причем все файлы должны быть сгруппированы под своими директориями так, чтобы можно было сделать отметку чекбокса на директории и все файлы находящиеся в этой папке тоже отметились, раньше такую штуку я видел в инсталяторе microsoft office 2007 там выбираешь целую ветку и чекбокс отмечается синим квадратом, если убрать одну из отметок на файле в этой директории, то квадратик бледнеет, показывая, что не все файлы выбраны. Да и изначально около каждой из директорий стоит плюсик, для ее раскрытия.
Вот код который обходит все папки и даже ставит чекбоксы напротив файлов, но это не совсем то, что я описал выше.
namespace FileTree
{
public partial class Form1 : Form
{
string filter = "*.dwg";
string Root = @"C:\test\"; // Корневая папка
public Form1()
{
InitializeComponent();
this.textBox1.Text = Root;
}
private void Form1_Load(object sender, EventArgs e)
{
Tree.CheckBoxes = true;
}
private void button1_Click(object sender, EventArgs e)
{
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
string GetDir = (sender as TextBox).Text;
Root = "";
if (Directory.Exists(GetDir))
Root = GetDir;
SetStatus();
loadFiles();
//LoadFolder();
}
private void LoadFolder() {
string[] fls = Directory.GetFiles(Root, filter, SearchOption.AllDirectories);
HashSet<string> hs = new HashSet<string>();
foreach (string f in fls) {
hs.Add(Path.GetDirectoryName(f));
}
Tree.Nodes.Clear();
foreach (string s in hs) {
TreeNode rootloc = Tree.Nodes.Add(s);
rootloc.Nodes.Add("111");
TreeNode lev3 = rootloc.Nodes.Add("222");
lev3.Nodes.Add("768768768");
}
}
private bool loadFiles() {
string[] fls = Directory.GetFiles(Root, filter, SearchOption.AllDirectories);
foreach (string f in fls) {
Tree.Nodes.Add(f);
}
return false;
}
private void SetStatus() {
ok.Enabled = Root != "";
}
private void Tree_AfterSelect(object sender, TreeViewEventArgs e)
{
}
}
}
А вот примерная картинка, правда вместо чекбоксов тут изображения папок, но чтобы смысл задачи был понятен привожу изображения.
Помогите пожалуйста решить задачу.