Click here to Skip to main content
15,889,281 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
I have a treeview with select and deselect checkboxes in a form1. If I have to click on a folder in a treeview, it should copy and display into the datagridview with the columns like Name of the folder, total copied files and status(complete or incomplete) which is in form2. how to do it? that copied files should be in treeview form in a datagridview.

What I have tried:

C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace TreeViewItems_to_ListViewItem
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public bool Checked { get; set; }
        public TreeNode SelectedNode { get; set; }
        public string FullPath { get; set; }

        private void Form1_Load(object sender, EventArgs e)
        {
            treeView1.CheckBoxes = true;
            

            foreach (TreeNode node in treeView1.Nodes)
            {
                node.Checked = true;
            }
            
            string[] drives = Environment.GetLogicalDrives();
           
            foreach (string drive in drives)
            {
               // treeView1.Nodes[0].Nodes[1].Checked = true;
                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("...");

                treeView1.Nodes.Add(node);                
            }

            foreach (TreeNode node in treeView1.Nodes)
            {
                node.Checked = true;
            }
        }

        private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
        {
            button1.Enabled = false;
            TreeNode node = e.Node;
            bool is_checked = node.Checked;
            foreach (TreeNode childNode in e.Node.Nodes)
            {
                childNode.Checked = e.Node.Checked;
            }
            treeView1.SelectedNode = node;

            //TreeNode node = e.Node;
            //bool is_checked = node.Checked;
            //foreach (TreeNode child in node.Nodes)
            //{
            //    child.Checked = is_checked;
            //}
            //treeView1.SelectedNode = node;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            foreach (TreeNode node in treeView1.Nodes)
            {
                node.Checked = true;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            foreach (TreeNode node in treeView1.Nodes)
            {
                node.Checked = false;
                button1.Enabled = true;
            }
        }

        private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)
        {
            if (e.Node.Nodes.Count > 0)
            {
                if (e.Node.Nodes[0].Text == "..." && e.Node.Nodes[0].Tag == null)
                {
                    e.Node.Nodes.Clear();


                    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) { Checked = true };

                        try
                        {
                            node.Tag = dir;


                            if (di.GetDirectories().Count() > 0)
                                node.Nodes.Add(null, "...", 0, 0).Checked = node.Checked;
                        }
                        catch (UnauthorizedAccessException)
                        {
                            node.ImageIndex = 12;
                            node.SelectedImageIndex = 12;
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message, "DirectoryLister", MessageBoxButtons.OK,
                            MessageBoxIcon.Error);
                        }
                        finally
                        {
                            node.Checked = e.Node.Checked;
                            e.Node.Nodes.Add(node);
                        }
                    }
                }
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {

            listView1.Items.Clear();
            treeView1.PathSeparator = ".";                
           // listView1.Items.Clear();
            int myNodeCount = treeView1.SelectedNode.GetNodeCount(true);
            decimal myChildPercentage = ((decimal)myNodeCount /
            (decimal)treeView1.GetNodeCount(true)) * 100;

            MessageBox.Show("The '" + treeView1.SelectedNode.FullPath + "' node has \n"
                                    + myNodeCount.ToString() + " Total items copied.\n ");
                                    //+ string.Format("{0:###.##}", myChildPercentage)
                                    //+ "% of the total tree nodes in the tree view control.");
            foreach (TreeNode node in treeView1.SelectedNode.Nodes)
            {
             //   treeView1.SelectedNode = treeView1.Nodes[0].Nodes[0].Nodes[0];
               // listView1.Items.Add(treeView1.SelectedNode.Text);
                
                listView1.Items.Add(treeView1.SelectedNode.Tag.ToString());
               
            }

           
        }

        private void button4_Click(object sender, TreeViewEventArgs e)
        {
            Application.Exit();
        }

        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {

            treeView1.Text = treeView1.SelectedNode.Tag.ToString();
            //listView1.Items.Add(treeView1.SelectedNode.Text);
            
        }

        private void button5_Click(object sender, EventArgs e)
        {
            listView1.Items.Clear();
        }

        private void treeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e)
        {
           
        }

        private void button4_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
}
Posted
Updated 18-Apr-16 21:46pm
v3
Comments
Shambhoo kumar 19-Apr-16 2:52am    
If you think, people write all code for you then you are in wrong place. please try your self and display you code in question section and ask which line of code you getting stuck. please come up with your code, then we'll happy to help you.
Santosh Kokatnur 19-Apr-16 2:54am    
Bro, I have written a code... I will update!
lukeer 19-Apr-16 3:13am    
When posting code, wrap it in tags (already done this time) like these:
<pre lang="c#">YourCodeHere();</pre>
It makes code much more readable and therefore improves your chances to get an answer.
However, your code snippet is very long. I doubt anyone will read it all. Folks around here like to focus on something specific that doesn't work the way it should instead of telling you how to correctly re-organize your code base.
Santosh Kokatnur 19-Apr-16 3:43am    
Okay, Sir...
Shambhoo kumar 19-Apr-16 3:14am    
Dear i don't know which line you are getting stuck but check below code for counting checked file

void LookupChecks(TreeNodeCollection nodes, List<TreeNode> list)
{
foreach (TreeNode node in nodes)
{
if (node.Checked)
list.Add(node);

LookupChecks(node.Nodes, list);
}
}

Usage

var list = new List<TreeNode>();
LookupChecks(TreeView.Nodes, list);

1 solution

It's not all code but may be help you.

C#
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void btnSubmit_Click(object sender, EventArgs e)
        {
           var list = new List<treenode>();
           list =  LookupChecks(TreeView.Nodes, list);
           
           Form2 objForm2 = new Form();
           objForm2.SelectedFile=list;
           objForm2.Show();
        }

        List<treenode> LookupChecks(TreeNodeCollection nodes, List<treenode> list)
        {
           foreach (TreeNode node in nodes)
           {
             if (node.Checked)
             list.Add(node);

             LookupChecks(node.Nodes, list);
           }
           return list;
        }


       public partial class Form2 : Form
       {
        public Form2()
        {
            InitializeComponent();
        }
        var SelectedFile = new List<treenode>();

        private void Form2_Load(object sender, EventArgs e)
        {
           if(SelectedFile.count>0)
            {
               //Write your logic here for showing data in GridView.
            }
        }
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900