Avatar billede keepy Seniormester
07. juni 2011 - 11:03 Der er 12 kommentarer og
1 løsning

TreeView

Håber nogle kan hjælpe

Jeg ved ikke hvor mange Noder og child noder jeg har det kan være alt fra 0 til 100, men når jeg
klikker på en child node under en Node, skal der ske følgende:

Oprettelse af en variabel med korrekt indhold givet ved den child node der er klikket på.

Node1
||
||__Child node1 //Klik her og variablen indeholder A
| |
| |_child node2 //Klik her og variablen indeholder B
|
|
Node2
||
||__Child node1 //Klik her og variablen indeholder C
| |
| |_child node2 //Klik her og variablen indeholder D
Avatar billede johny Nybegynder
07. juni 2011 - 12:01 #1
Hvordan opbygger du træet? Umiddelbart ville jeg mene at det letteste bare var, at på klik, så flader du træstrukturen ud, finder ud af index'et på det valgte element, og returnerer så det tilsvarende bogstav.
Avatar billede Syska Mester
07. juni 2011 - 12:46 #2
#johny

Tror ikke han kan det, da han siger at elements er ukendt.

Nu er det oprettet under .NET ... så ved ikke om det er WPF, Web eller Win.

Men i WinForms har et TreeNode eller hvad de nu hedder en "Tag" property hvor du kan sætte en custom value. ( den modtager et object )

Så kan du jo tage fat i SelectedNode på dit tree og se om "Tag" er not null. Derved har du ingen begræsning på hvordan dit træ kan se ud.

mvh
Avatar billede johny Nybegynder
07. juni 2011 - 13:56 #3
@buzzzz: Som jeg forstår det, så er det først i klik øjeblikket at værdien skal "resolve", så elementerne har med andre ord ikke en fast værdi, men resultatet afhænger af hvordan træet ser ud når der klikkes.
Avatar billede Syska Mester
07. juni 2011 - 15:56 #4
Og træet ser ud som da det blev lavet ... ergo kan de jo sættes tidligere.

Jeg vil antage han brugte "abcd" som test værdier, og de måske er noget andet i hans system, og der ikke følger en systematisk rækkefølge, derfor jeg brugte en lidt alternativ måde at gøre det på.

Men det hele er vel et spøgsmål om de værdier altid vil følge "abcde....." osv eller de kan antage andre værdier ... det må spørger lige gøre os kloge på.

mvh
Avatar billede johny Nybegynder
07. juni 2011 - 22:23 #5
Det er så den antagelse jeg ikke har. Jeg forstår det netop som om at træet opbygges løbende. Men ja, det er jo mest gætværk. :)
Avatar billede Syska Mester
07. juni 2011 - 22:42 #6
Hvis det opbygges løbende kan min metode stadig bruges selvom der ikke er en logisk rækkefølge.
Avatar billede keepy Seniormester
08. juni 2011 - 07:14 #7
Træets bygges hver gang programmet starter eller någet der fortages en ændring i programmet.

mht. child node, så skal den kunne indeholde alt bare det er en string, som nogle gange vil det være et A andre måske en sætning eller en sti.
Avatar billede keepy Seniormester
08. juni 2011 - 07:14 #8
någet = når
Avatar billede keepy Seniormester
08. juni 2011 - 07:36 #9
Tag lyder som en god løsning, men hvordan, giver man en child node en tag??

treeView1.Nodes[b].Nodes.Tag = SubNodeSti; ??? //Tag findes ikke efter nodes
Avatar billede johny Nybegynder
08. juni 2011 - 14:50 #10
Men er der en bestem rækkefølge i dataene, eller har de være især unik data tilknyttet som ikke har noget at gøre med hvor i træet de er? Jeg læste det netop således:

Før indsættelse af node:
1.1: A
1.2: B
2.1: C
2.2: D
Efter indsættelse af node:
1.1: A
1.2: B
1.3: C
2.1: D
2.2: E

Men er det WinForms, WPF eller Silverlight? :)
Avatar billede Syska Mester
08. juni 2011 - 16:48 #11
Lyder som WinForms.

Hvordan fylder du Nodes i dit træ? Der må du have adgnag til din TreeNode's når du opretter dem, og samme tid kan du tilgå den .Tag property på din element.

mvh
Avatar billede keepy Seniormester
09. juni 2011 - 07:58 #12
Det er winforms

Tag løste mit problem, men hvordan add man en ny child node object til en eksiterende node??

Nedenstående eksempel virker ikke:

TreeNode node = new TreeNode();
TreeNode childnode = new TreeNode();

if (node.Nodes.Equals(Sted)
                {
  childnode.Text = tid                                    childnode.Tag = Sti;
node.Nodes.add(childenode);             
}
Avatar billede Syska Mester
09. juni 2011 - 15:25 #13
Super og svar.

Hvad skulle overstående gøre ?

Du tjekker om en variable er den samme som en TreeNodeCollection. Den tror jeg altid vil være false.

Men

node.Nodes.Add(childNode) tilføjer en childNode til node.

mvh
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