Avatar billede charly Nybegynder
01. juni 2005 - 22:09 Der er 7 kommentarer og
1 løsning

array til treeview

Hej,

Er der en smart måde, hvorpå man kan få vist et serialiserbart objekt i et treeview, hvis man ikke på forhånd kender objekts indhold? Objektet kunne eksempelvis indeholde arrays med dertilhørende subarrays.

/charly
Avatar billede burningice Nybegynder
01. juni 2005 - 22:51 #1
er der nogen speciel grund til at du explicit nævner at objectet er serialiserbart?

Men bortset fra det kan du altid bruge reflection og undersøge typerne på de forskellige egenskaber og metoder for at se hvad du kan bruge til at binde til dit treeview.
Avatar billede charly Nybegynder
01. juni 2005 - 23:08 #2
Jeg har kigget lidt på det her Reflection namespace, men går det ikke mere på de forskellige members på typen? Jeg er lidt mere interesseret i at få skrevet selve value ud.

Jeg ønsker en funktion lidt ala et filsystem, hvor man ikke på forhånd kan gætte sig til hvor mange kataloger filer osv, der er under et givent katalog.
Avatar billede nielle Nybegynder
01. juni 2005 - 23:22 #3
Måske noget i stil med:

private void Form1_Load(object sender, System.EventArgs e)
{
    int[] AAA = {11, 12, 13};
    object[] BBB = {"1.1", "1.2", AAA, "1.3"};
    string[] CCC = {"2.1"};
    object[] DDD = {"3.1", CCC, "3.3", BBB};

    AddArray(DDD);
    this.treeView1.ExpandAll();
}

private void AddArray(Array TheArray)
{
    foreach (object O in TheArray)
    {
        TreeNode TN = null;
        if (O.ToString().EndsWith("[]"))
        {
            TN = new TreeNode("Array");
            AddArray(TN, O as Array);
        }
        else
            TN = new TreeNode(O.ToString());

        this.treeView1.Nodes.Add(TN);
    }
}

private void AddArray(TreeNode TheNode, Array TheArray)
{
    foreach (object O in TheArray)
    {
        TreeNode TN = null;
        if (O.ToString().EndsWith("[]"))
        {
            TN = new TreeNode("Array");
            AddArray(TN, O as Array);
        }
        else
            TN = new TreeNode(O.ToString());

        TheNode.Nodes.Add(TN);
    }
}
Avatar billede charly Nybegynder
01. juni 2005 - 23:27 #4
tak. Smider du lige et svar ? ;-)
Avatar billede nielle Nybegynder
01. juni 2005 - 23:37 #5
Svar :^)
Avatar billede nielle Nybegynder
01. juni 2005 - 23:40 #6
En mere kompakt form:

private void Form1_Load(object sender, System.EventArgs e)
{
    int[] AAA = {11, 12, 13};
    object[] BBB = {"1.1", "1.2", AAA, "1.3"};
    string[] CCC = {"2.1"};
    object[] DDD = {"3.1", CCC, "3.3", BBB};

    AddArray(null, DDD);
    this.treeView1.ExpandAll();
}

private void AddArray(TreeNode TheNode, Array TheArray)
{
    foreach (object O in TheArray)
    {
        TreeNode TN = null;
        if (O.ToString().EndsWith("[]"))
        {
            TN = new TreeNode("Array");
            AddArray(TN, O as Array);
        }
        else
            TN = new TreeNode(O.ToString());

        if (TheNode == null)
            this.treeView1.Nodes.Add(TN);
        else
            TheNode.Nodes.Add(TN);
    }
}
Avatar billede nielle Nybegynder
02. juni 2005 - 06:24 #7
... og en lille smule mere stilrent:

private void AddArray(TreeNode TheNode, Array TheArray)
{
    foreach (object O in TheArray)
    {
        TreeNode TN = null;
        if (O is Array)
        {
            TN = new TreeNode("Array");
            AddArray(TN, O as Array);
        }
        else
            TN = new TreeNode(O.ToString());

        if (TheNode == null)
            this.treeView1.Nodes.Add(TN);
        else
            TheNode.Nodes.Add(TN);
    }
}
Avatar billede burningice Nybegynder
26. juni 2005 - 19:19 #8
hvor kom det der serialiserbart objekt ind i billedet?
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