Example #1
0
        /// <summary>
        /// 生成指定结点的至其二级子结点
        /// </summary>
        /// <param name="item">指定结点</param>
        public static void CreatSubTVItemFromTVItem(MyTreeViewItem item)
        {
            if (item.Items.Count == 0)
            {
                _CreatSubTVItemFromTVItem(item);
            }

            foreach (var i in item.Items)
            {
                var ii = i as MyTreeViewItem;
                if (ii.Items.Count == 0)
                {
                    _CreatSubTVItemFromTVItem(ii);
                }
            }
        }
Example #2
0
        /// <summary>
        /// 返回treeview的根结点
        /// </summary>
        /// <returns></returns>
        public static MyTreeViewItem GetRootTVItem()
        {
            string[]       disks     = Directory.GetLogicalDrives();
            DriveInfo[]    disksInfo = DriveInfo.GetDrives();
            int            j         = 0;
            MyTreeViewItem root      = new MyTreeViewItem("此电脑", MyIcons.disk);

            root.Tag = "";
            foreach (string i in disks)
            {
                MyTreeViewItem tvic = new MyTreeViewItem(
                    disksInfo[j++].VolumeLabel + " (" + i.Substring(0, 2) + ")", MyIcons.disk);
                tvic.Tag = i;
                root.Items.Add(tvic);
            }
            return(root);
        }
Example #3
0
        /// <summary>
        /// 返回代表指定路径的treeviewItem,不存在时自动为该路径创建结点
        /// </summary>
        /// <param name="tv"></param>
        /// <param name="path">指定的路径</param>
        /// <param name="changeSelected">是否设置为被选中项,默认false</param>
        /// <returns>对应结点</returns>
        public static MyTreeViewItem GetTVItemFromPath(TreeView tv, string path, bool changeSelected = false)
        {
            tv.BeginInit();
            MyTreeViewItem aimItem = tv.Items[0] as MyTreeViewItem; //获得root item

            if (path != "")                                         //不是代表“此电脑”的路径
            {
                string disk = path.Substring(0, 3);                 //获取磁盘
                //使aimItem为某磁盘根目录
                foreach (var i in aimItem.Items)
                {
                    if (((MyTreeViewItem)i).Tag.ToString() == disk)
                    {
                        aimItem = i as MyTreeViewItem;
                        break;
                    }
                }
                //获取磁盘子路径
                path = path.Substring(3);
                string[] dirs = path.Split('\\');

                //aimItem指向目标目录
                for (int j = 0; j < dirs.Length; j++)
                {
                    if (aimItem.Items.IsEmpty)//该目录没有子目录时,创建子目录
                    {
                        CreatSubTVItemFromTVItem(aimItem);
                    }
                    foreach (var i in aimItem.Items)
                    {
                        if (((MyTreeViewItem)i).HeaderText == dirs[j])
                        {
                            aimItem = i as MyTreeViewItem;
                            break;
                        }
                    }
                }
            }
            if (changeSelected == true)
            {
                (tv.SelectedItem as MyTreeViewItem).IsSelected = false;
                aimItem.IsSelected = true;
            }
            tv.EndInit();
            return(aimItem);
        }
Example #4
0
 /// <summary>
 /// 生成指定结点的子结点
 /// </summary>
 /// <param name="item">指定结点</param>
 private static void _CreatSubTVItemFromTVItem(MyTreeViewItem item)
 {
     try {
         string   newpath = item.Tag.ToString();
         string[] dirs    = Directory.GetDirectories(newpath);//获取该目录的内容
         if (newpath.Length > 3)
         {
             newpath += "\\";
         }
         ;
         foreach (string i in dirs)
         {
             if ((new FileInfo(i).Attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
             {
                 continue;
             }
             MyTreeViewItem tvic = new MyTreeViewItem(i.Replace(newpath, ""), MyIcons.folder);
             tvic.Tag = i;
             item.Items.Add(tvic);
         }
     }
     catch (Exception) { }
 }