Avatar billede _et Praktikant
16. juli 2004 - 20:30 Der er 8 kommentarer og
2 løsninger

TreeView og ListView sample

Jeg kan ikke få treeview og listview til at virke ordenligt.
Problemet er at jeg ikke kan gennemskue hvordan "node" systemet virker, så jeg vil gerne have et lille eksempel, hvor man i treeview kan vælge et dir, og så kommer filerne automatisk i listview'en

Så ville jeg måske kunne gennemskue det. :-)

Et projekt, i en zip, ville være fedt, men mindre kan også gøre det.
Avatar billede finger Nybegynder
16. juli 2004 - 20:57 #1
node systemet er ganske lige til. Det er bygget op lige som et almindeligt fil system. man har en rod node fx c:\ som har nogle child-noder fx windows mappen og program files mappen. disse har så deres sub noder osv osv.
For at fylde et treeview med noder er deet mest praktisk at tage udgangspunkt i System.IO.FileInfo og Directoryinfo. disse er en collection af filer og mapper med deres sub mapper. dette er så lige til at lægge ind i treeviwet med en recursiv metode. Læg fx fil/mappe navnet som text i en node og tilknyt en fil fra fileinfo i nodens tag property.

For at få vist info om en fil i et listview (hvis det er det du vil??) så brug events på treeviewet og hiv info om det valgte element ud.

Er det tilstrækkeligt?
Avatar billede finger Nybegynder
16. juli 2004 - 21:00 #2
uden selv at have set på koden, tror jeg at du kan bruge dette eksempel
http://www.csharphelp.com/archives2/archive313.html
Avatar billede finger Nybegynder
16. juli 2004 - 21:02 #3
hmmm det eksempel var ikke så fedt. kan du klare dig med det du har eller skal jeg koge et eksempel sammen?
Avatar billede _et Praktikant
16. juli 2004 - 21:24 #4
Kigger lige -
Avatar billede _et Praktikant
16. juli 2004 - 21:41 #5
Jeg tror gerne jeg vil have en lille gryde med et eks. fra dig :-) tak
Avatar billede _et Praktikant
16. juli 2004 - 21:44 #6
Jeg skal lave et program, der kan klippe en "string" ud af alle valgte filnavne, hvis det vil påvirke eksemplet
Avatar billede finger Nybegynder
16. juli 2004 - 21:59 #7
Jeg har desværre ikke tid til det perfekte eksempel lige nu, men dette burde få dig startet.
Bemærk at dette eksempel ikke virker korrekt i det at det føjer for mange noder til træet. det har noget at gøre med hvilken noder der bliver givet til metoden.



using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;

namespace HowToTreeview
{
    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.TreeView treeView1;
        private System.Windows.Forms.Label label1;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;

        public Form1()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.treeView1 = new System.Windows.Forms.TreeView();
            this.label1 = new System.Windows.Forms.Label();
            this.SuspendLayout();
            //
            // treeView1
            //
            this.treeView1.ImageIndex = -1;
            this.treeView1.Location = new System.Drawing.Point(8, 8);
            this.treeView1.Name = "treeView1";
            this.treeView1.SelectedImageIndex = -1;
            this.treeView1.Size = new System.Drawing.Size(200, 360);
            this.treeView1.TabIndex = 0;
            this.treeView1.BeforeExpand += new System.Windows.Forms.TreeViewCancelEventHandler(this.treeView1_BeforeExpand);
            //
            // label1
            //
            this.label1.Location = new System.Drawing.Point(8, 376);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(200, 80);
            this.label1.TabIndex = 2;
            //
            // Form1
            //
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(216, 461);
            this.Controls.Add(this.label1);
            this.Controls.Add(this.treeView1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);
            this.ResumeLayout(false);

        }
        #endregion

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.Run(new Form1());
        }

        private void button1_Click(object sender, System.EventArgs e)
        {
           
        }

        public void LoadFilesystem(DirectoryInfo d, TreeNode t, bool rerun)
        {
            foreach(DirectoryInfo childDir in d.GetDirectories())
            {
                TreeNode tn = new TreeNode(childDir.Name);
                tn.Tag = childDir;
                t.Nodes.Add(tn);
                if(rerun)
                LoadFilesystem(childDir, tn,false);
            }

            foreach(FileSystemInfo fs in d.GetFileSystemInfos())
            {
                TreeNode tn = new TreeNode(fs.Name);
                tn.Tag = fs;
                t.Nodes.Add(tn);
            }
        }

        private void treeView1_BeforeExpand(object sender, System.Windows.Forms.TreeViewCancelEventArgs e)
        {
            if(e.Node.Tag is DirectoryInfo)
            {
                LoadFilesystem((DirectoryInfo)e.Node.Tag,e.Node,true);
            }
        }

        private void Form1_Load(object sender, System.EventArgs e)
        {
            treeView1.BeginUpdate();
            DirectoryInfo d = new DirectoryInfo("c:\\");
            TreeNode t = new TreeNode(d.Name);
            t.Tag = d;
            treeView1.Nodes.Add(t);
            LoadFilesystem(d, t, true);
            treeView1.EndUpdate();
        }
    }
}
Avatar billede _et Praktikant
16. juli 2004 - 22:04 #8
jeg prøver :)
Avatar billede finger Nybegynder
18. juli 2004 - 16:33 #9
fik du knækket nøden?
Avatar billede _et Praktikant
19. juli 2004 - 18:09 #10
Ja. Jeg fik lavet to seperate test, ud fra dit eksempel - Det var specielt foreach() løkkerne der hjalp

Thanks. :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester