Laden...

Dynamisch TreeView füllen

Erstellt von Vassili vor 18 Jahren Letzter Beitrag vor 18 Jahren 2.555 Views
Vassili Themenstarter:in
187 Beiträge seit 2005
vor 18 Jahren
Dynamisch TreeView füllen

Hallo leute, ich verzweifel gerade an einem projekt.

Ich versuche seit 2 tagen meinem TreeView zu erklären, dass er dynamisch Unterknoten im Treeview erzeugen soll.

Der benutzer gibt durch eine TextBox die Anzahl an unterpunkten an und das soll testweise in einem Treeview angezeigt werden.

Vielleicht sagen die folgenden Bilder mehr aus



mein erster ganz klar gescheiteter versuch sah ungefähr so aus

TreeNode[,] trvNodes = new TreeNode[Groups + 1,3];
for (int o = 0; o < Groups + 1; o++)
{
	for (int u = 0; u < trvNodes.Length/(txtGruppe + 1);u++)
	{
		trvNodes[o,u] = new TreeNode("Test " + o.ToString() + u.ToString());
		this.trvTreeView.Nodes.Add(trvNodes[o,u]);
	}
} 

Ich hab mir gedacht, dass ich die länge der ersten Dimension als Anzahl an Ebenen benutze und die zweite Dimension als Anzahl von Sätzen in der Ebene, aber da fehlt noch was, ich komme nur nicht drauf.

kann mir jemand helfen?

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo Vassili,

ich verstehe bei dem Bild noch nicht den Zusammenhang zwischen den Zahlen in den TextBoxen und der Anzahl von Unterknoten. Scheinbar gibt die Zahl die Ebene an. Aber wodurch ist bestimmt, wie viele Unterknoten erzeugt werden sollen? Und sollen für jeden Knoten immer gleich viele Unterknoten erzeugt werden? Vielleicht kannst du es nochmal mit anderen Worten beschreiben, wo wie viele Unterknoten erzeugt werden sollen.

herbivore

100 Beiträge seit 2005
vor 18 Jahren

Also ich würde das ganze ohne dem array machen.

Du fügst die erste ebene von Knoten einfach mit treeView1.Nodes.Add(..) ein.

Die Unterknoten fügst du dann jeweils in die Nodes Collection der einzelnen Knoten ein...

Also ganz hierarchisch.


TreeNode node1 = new TreeNode("Knoten 1");
TreeNode node1a = new TreeNode("Knoten 1A");
TreeNode node1a1 = new TreeNode("Knoten 1A.1");

TreeNode node2 = new TreeNode("Knoten 2");

node1.Nodes.Add(node1a);
node1a.Nodes.Add(node1a1);

treeView1.Nodes.Add(node1);
treeView1.Nodes.Add(node2);

lg,
kakaomilch.

Vassili Themenstarter:in
187 Beiträge seit 2005
vor 18 Jahren

es ist eigentlich egal, wieviele unterknoten erzegt werden. wichtig ist mir das erzeugen der ebenen.

Die zahl in der Textbox gibt die Anzahl an Ebenen in der Stammebene an.

Im ersten Bild sind 4 Knoten erzeugt, die die Stammebene darstellen.
da die textbox '0' enthält werden keine Unterknoten erzeugt.

im zweiten Bild haben die 4 Knoten der Stammebene jeweils 2 Unterknoten, die die erste Unterebene darstellen. Hier enthält die Textbox die Zahl 1, also eine Unterebene. Die Anzahl an Unterknoten pro Stammebene ist eigentlich egal. ich habe nur beispielhaft 2 Unterknoten erzeugt.

im dritten Bild hat jeder Knoten der ersten Unterebene jeweils einen unterknoten, welche die zweite unterebene darstellen. klar warum, weil die textbox die zahl 2 enthält.
Auch hier ist es eigentlich egal, wie viele unterknoten vorhanden sind. Hautpsache die Ebene wird ersichtlich.

das, was ich halt versuche ist n Ebenen im TreeView zu erzeugen. Und um das jetzt nicht unnötig schwieriger zu machen, würde ich beispielweise nur mit einem Knoten je Ebene anfangen, wenn das funzen würde währe ich glücklich

Vassili Themenstarter:in
187 Beiträge seit 2005
vor 18 Jahren

@ kakaomilch, das ist doch dann fest programmiert, du erstellst ein Objekt für jeden Knoten.

100 Beiträge seit 2005
vor 18 Jahren

Das soll ja auch nur exemplarisch zeigen wie dus machst..

Du kannst das ja dann auch dynamisch anlegen..

lg,
kakaomilch.

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo Vassili,

hier eine Möglichkeit die gewünschte Dynamik hinzubekommen (ungetestet):


TreeNodeCollection tncoll = tv.TreeNodes;
for (int i = 1; i <= iEbenen; ++i) {
   tncoll.Add (new TreeNode ("Ebene " + i));
   tncoll = tncoll[0].TreeNodes;
}

herbivore

Vassili Themenstarter:in
187 Beiträge seit 2005
vor 18 Jahren

was ist tv.TreeNodes?

das TreeView Steuerelement?

Vassili Themenstarter:in
187 Beiträge seit 2005
vor 18 Jahren

super, ich war schon dabei ein 3 dimensionales array zu erzeugen um das umzusetzen.

es funzt. thx