C# Do nodes";TreeView“;是否具有唯一标识符(id)?

C# Do nodes";TreeView“;是否具有唯一标识符(id)?,c#,winforms,C#,Winforms,TreeView是基于文件和文件夹创建的。   每个节点都应该将程序进程链接到节点id。   场景。 可以通过Windows资源管理器删除(添加、重命名)文件和文件夹。 1.节点“TreeView”是否具有唯一标识符(id),或者是否应该分配它们? 那些因此,在删除(添加、重命名)文件(文件夹)后,打开(关闭)其余节点的程序id不会更改。   2.如果默认情况下“TreeView”的节点没有ID,那么如何分配它们的ID 或者在创建“TreeView”时,程序会分配一个ID并放入“标记”中,并通

TreeView是基于文件和文件夹创建的。
  每个节点都应该将程序进程链接到节点id。
  场景。
可以通过Windows资源管理器删除(添加、重命名)文件和文件夹。

1.节点“TreeView”是否具有唯一标识符(id),或者是否应该分配它们? 那些因此,在删除(添加、重命名)文件(文件夹)后,打开(关闭)其余节点的程序id不会更改。
  2.如果默认情况下“TreeView”的节点没有ID,那么如何分配它们的ID

  • 或者在创建“TreeView”时,程序会分配一个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
    属性。