C# Do nodes";TreeView“;是否具有唯一标识符(id)?
TreeView是基于文件和文件夹创建的。C# Do nodes";TreeView“;是否具有唯一标识符(id)?,c#,winforms,C#,Winforms,TreeView是基于文件和文件夹创建的。 每个节点都应该将程序进程链接到节点id。 场景。 可以通过Windows资源管理器删除(添加、重命名)文件和文件夹。 1.节点“TreeView”是否具有唯一标识符(id),或者是否应该分配它们? 那些因此,在删除(添加、重命名)文件(文件夹)后,打开(关闭)其余节点的程序id不会更改。 2.如果默认情况下“TreeView”的节点没有ID,那么如何分配它们的ID 或者在创建“TreeView”时,程序会分配一个ID并放入“标记”中,并通
每个节点都应该将程序进程链接到节点id。
场景。
可以通过Windows资源管理器删除(添加、重命名)文件和文件夹。
1.节点“TreeView”是否具有唯一标识符(id),或者是否应该分配它们? 那些因此,在删除(添加、重命名)文件(文件夹)后,打开(关闭)其余节点的程序id不会更改。
2.如果默认情况下“TreeView”的节点没有ID,那么如何分配它们的ID
private void InitFolders()
{
//Отключаем любую перерисовку
//иерархического представления.
treeView1.BeginUpdate();
//Инициализируем новую переменную предоставляющую методы экземпляра
//класса для создания, перемещения и перечисления
//в каталогах и подкаталогах.
System.IO.DirectoryInfo di;
try
{
//Вызываем метод GetDirectories с передачей в качестве параметра, пути к выбранной директории.
// Данный метод возвращает массив имен подкаталогов.
string[] root = System.IO.Directory.GetDirectories(path);
//Проходимся по всем полученным подкаталогам.
foreach (string s in root)
{
try
{
//Заносим в переменную информацию
//о текущей директории.
di = new System.IO.DirectoryInfo(s);
// Вызов метода сканирования с передачей в качестве параметра, информации о текущей директории и объект
// System.Windows.Forms.TreeNodeCollection,
// который предоставляет узлы дерева, назначенные элементу управления иерархического представления.
//
BuildTree(di, treeView1.Nodes);
}
catch { }
}
}
catch { }
//Разрешаем перерисовку иерархического представления.
treeView1.EndUpdate();
}
//Процесс получения папок и файлов
private void BuildTree(System.IO.DirectoryInfo directoryInfo, TreeNodeCollection addInMe)
{
//Добавляем новый узел в коллекцию Nodes
//с именем текущей директории и указанием ключа
//со значением "Folder".
TreeNode curNode = addInMe.Add("Folder", directoryInfo.Name);
//addInMe.Add(directoryInfo.FullName, directoryInfo.Name,
//тут можно указать номер картинки для узла из imageCollection);
//Перебираем папки.
foreach (System.IO.DirectoryInfo subdir in directoryInfo.GetDirectories())
{
//Запускам процесс получения папок и файлов
//с текущей найденной директории.
BuildTree(subdir, curNode.Nodes);
}
//Перебираем файлы
foreach (System.IO.FileInfo file in directoryInfo.GetFiles())
{
//Добавляем новый узел в коллекцию Nodes
//С именем текущей директории и указанием ключа
//со значением "File".
curNode.Nodes.Add("File", file.Name);
//curNode.Nodes.Add("File", file.Name,
//тут можно указать номер картинки для узла из imageCollection);
}
}
#endregion *** TreeView ***
您可以根据需要设置
名称
或标记
属性。默认情况下,这些属性没有任何类型的ID与之关联。如果需要这样做,您需要在.Tag
或底层数据源中添加它。我个人会使用TreeNode
的Tag
属性,或者查看如何创建自定义TreeView
名称是任何对象的字符串标记。没有一个保证是唯一的。对于文件系统操作,您不需要密钥。使用节点的FullPath
属性。