مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

آریا

عضویت از 1392/09/13

یافتن تمامی فولدر ها

  • چهارشنبه 10 تیر 1394
  • 20:34
تشکر میکنم

سلام

من میخام تمام فولدر های موجود در یک درایو در treeview و listbox نمایش داده شوند

مثلا: همه فولدر های موجود در درایو D

D:\Folder-1

D:\Folder-2/Folder-3

و...

به طور خلاصه همه فولدر ها رو پیدا کنه.

پاسخ های این پرسش

تعداد پاسخ ها : 2 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • پنجشنبه 11 تیر 1394
  • 08:52
public Form1()
    {
        InitializeComponent();

        DirectoryInfo directoryInfo = new DirectoryInfo(@"C:\Users\hikuma\Documents\IR");
        if (directoryInfo.Exists)
        {
            treeView1.AfterSelect += treeView1_AfterSelect;
            BuildTree(directoryInfo, treeView1.Nodes);
        }
    }

    private void BuildTree(DirectoryInfo directoryInfo, TreeNodeCollection addInMe)
    {
        TreeNode curNode = addInMe.Add(directoryInfo.Name);

        foreach (FileInfo file in directoryInfo.GetFiles())
        {
            curNode.Nodes.Add(file.FullName, file.Name);
        }
        foreach (DirectoryInfo subdir in directoryInfo.GetDirectories())
        {
            BuildTree(subdir, curNode.Nodes);
        }
    }

    private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
    {
        if(e.Node.Name.EndsWith("txt"))
        {
            this.richTextBox1.Clear();
            StreamReader reader = new StreamReader(e.Node.Name);
            this.richTextBox1.Text = reader.ReadToEnd();
            reader.Close();
        }
    }

 

کاربر سایت

سجاد باقرزاده

عضویت از 1392/02/24

  • پنجشنبه 11 تیر 1394
  • 10:09

یک treeview با نام dirsTreeView در فرم تون بسازید و داخل رویداده BeforeExpand آن کد زیر را قرار بدید :

if (e.Node.Nodes.Count > 0)
{
    if (e.Node.Nodes[0].Text == "..." && e.Node.Nodes[0].Tag == null)
    {
        e.Node.Nodes.Clear();

        //get the list of sub direcotires
        string[] dirs = Directory.GetDirectories(e.Node.Tag.ToString());

        foreach (string dir in dirs)
        {
            DirectoryInfo di = new DirectoryInfo(dir);
            TreeNode node = new TreeNode(di.Name, 0, 1);

            try
            {
                //keep the directory's full path in the tag for use later
                node.Tag = dir;

                //if the directory has sub directories add the place holder
                if (di.GetDirectories().Count() > 0)
                    node.Nodes.Add(null, "...", 0, 0);
            }
            catch (UnauthorizedAccessException)
            {
                //display a locked folder icon
                node.ImageIndex = 12;
                node.SelectedImageIndex = 12;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "DirectoryLister",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                e.Node.Nodes.Add(node);
            }
        }
    }

و سپس برای داخل کد Page_Load صفحه کد زیر را نمایش بدید :

foreach (string drive in drives)
{
    DriveInfo di = new DriveInfo(drive);
    int driveImage;

    switch (di.DriveType)    
    {
        case DriveType.CDRom:
            driveImage = 3;
            break;
        case DriveType.Network:
            driveImage = 6;
            break;
        case DriveType.NoRootDirectory:
            driveImage = 8;
            break;
        case DriveType.Unknown:
            driveImage = 8;
            break;
        default:
            driveImage = 2;
            break;
    }

    TreeNode node = new TreeNode(drive.Substring(0, 1), driveImage, driveImage);
    node.Tag = drive;

    if (di.IsReady == true)
        node.Nodes.Add("...");

    dirsTreeView.Nodes.Add(node);
}

 

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)