vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: Durch TreeView navigieren 
Autor: Maywood
Datum: 08.05.07 14:37

Da mich das Thema selber auch sehr interessiert, hab ich bzgl. Navigation etwas experimentiert und bin letztendliches auf eine viel (hoffentlich!) bessere Idee gekommen.

Und zwar mit einem Array als Datenquelle welches die ChildNode-Referenzen speichert. Im Programm kann man dann einfach über den aktuellen Array-Index navigieren.

Okay, lange Rede kurzer Sinn, hier der Code von mir:
	'// -----
	Dim ChildNodes as new System.Collections.Generic.List(Of TreeNode)
	Dim CurrentChildNodeIndex As Integer = -1
 
	'// Search the ChildNodes
	Private Sub GetChildNodes( ByVal CurrentNodes As TreeNodeCollection )
		For Each CurrentNode As TreeNode In CurrentNodes
			If CurrentNode.Tag Is Nothing OrElse (Not CurrentNode.Tag.Equals("Root")) _
  Then 
				CurrentNode.Tag = me.ChildNodes.Count
				ChildNodes.Add (CurrentNode)
			End If
			GetChildNodes(CurrentNode.Nodes)
		Next
	End Sub
 
	'// Fill the TreeView (Example) and Scan Nodes 
	Sub Button4Click(ByVal sender As Object, ByVal e As EventArgs)
	    Dim RootNodes As TreeNode () = { _ 
	    								 New TreeNode("RootNode1"), _
	     								 New TreeNode("RootNode2"), _ 
	     								 New TreeNode("RootNode3") _ 
	     								}
		me.treeView1.Nodes.Clear()
		For a As Integer = 0 To 10 
			For Each CurrentRootNode As TreeNode In RootNodes
				CurrentRootNode.Tag = "Root"
				CurrentRootNode.Nodes.Add ( New TreeNode("ChildNode" + a.tostring()) )				
			Next
		Next
		Me.treeView1.Nodes.AddRange (RootNodes)
		GetChildNodes(me.treeView1.Nodes)
	End Sub
 
	'// Select PrevNode
	Sub Button5Click(ByVal sender As Object, ByVal e As EventArgs)
		CurrentChildNodeIndex -=1
		If CurrentChildNodeIndex < 0 Then
			CurrentChildNodeIndex = 0
		End If
		me.treeView1.SelectedNode = me.ChildNodes(CurrentChildNodeIndex)
		Me.treeView1.Focus()
	End Sub
 
	'// Select NextNode
	Sub Button6Click(ByVal sender As Object, ByVal e As EventArgs)
		CurrentChildNodeIndex +=1
		me.treeView1.SelectedNode = me.ChildNodes(CurrentChildNodeIndex)
		If CurrentChildNodeIndex >= me.ChildNodes.Count - 1 Then
			CurrentChildNodeIndex = 0
		End If
		Me.treeView1.Focus()
	End Sub
 
	'// Set CurrentChildNodeIndex by mouseclick
	Sub TreeView1AfterSelect(ByVal sender As Object, ByVal e As TreeViewEventArgs)
		If not e.Action = TreeViewAction.ByMouse orelse _ 
			(e.Node.Tag Is Nothing OrElse e.Node.Tag.Equals ("Root")) Then
			Exit Sub
		Else
			me.CurrentChildNodeIndex = CType(e.Node.Tag, Int32)
		End If
	End Sub
	'// -----
Anmerkung: Ich hab für das o.g. Bsp. das Treenode Tag Property als Flag benutzt. Das ist alles andere als optimal. Das beste wäre wohl, man erstellt seine eigene TreeNode-Klasse welches ein enstprechende NodeTyp Property besitzt. Ein Enum wäre hierfür vermutlich sehr gut geeignet.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Durch TreeView navigieren1.380Hannes H.07.05.07 20:07
Re: Durch TreeView navigieren1.063Maywood08.05.07 10:23
Re: Durch TreeView navigieren1.130FohnBit08.05.07 12:00
Re: Durch TreeView navigieren1.245Maywood08.05.07 14:37
Re: Durch TreeView navigieren1.013FohnBit14.05.07 08:43

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel