El árbol ya lo tengo lleno lo que necesito es recorrerlo y saber la posición de un nodo especifico para posteriormente enviarlo como parámetro al formulario.
Al seleccionar el nodo: nodo. Fullpath
Hola disculpa intente realiza lo que me indicas pero no me funciono, te envío un código de la función con la que lleno el treeview y lo que necesito es que al darle doble click sobre un nodo me indique su posición, y de nuevo mil disculpa Private Sub frm_vista_prv_cand_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim sCnn As String = "Server= " & gserver & "; database=" & gdatabase & "; integrated security=yes" Dim sSel As String Dim cnn As New SqlConnection(sCnn) Dim nodo As TreeNode ? ? ' crear los DataAdapter Dim oDAProfesiones As New SqlDataAdapter("SELECT * FROM ben_prof_descripcion ORDER BY cod_prof", sCnn) Dim oDACandidatos As New SqlDataAdapter("SELECT convert(varchar(70),cod_prof)cod_prof,cod_cand,+' - '+nombre+' - '+apellido+' - '+telefono as datos_perso FROM ben_deb_candidatos ORDER BY cod_cand,nombre", sCnn) ' crear conjunto de datos Dim oDataSet As New DataSet ' abrir la conexión cnn.Open() ' utilizar los adaptadores para llenar el dataset con las tabla oDAProfesiones.Fill(oDataSet, "ben_prof_descripcion") oDACandidatos.Fill(oDataSet, "ben_deb_candidatos") ' cerrar la conexión cnn.Close() ' defino variables del tipo DataTable Dim oTablaProfesiones As DataTable Dim oTablaCandidatos As DataTable ' asigno a las variables los datos de las tablas del DataSet oTablaProfesiones = oDataSet.Tables("ben_prof_descripcion") oTablaCandidatos = oDataSet.Tables("ben_deb_candidatos") ' lleno la vista con el contenido de la Tabla Territories oVista = oTablaCandidatos.DefaultView ' deshabilita la actualización en pantalla del control TreeView TreeView1.BeginUpdate() ' defino variable del tipo DataRow Dim Registro As DataRow ' creo un nodo raiz (el nombre Country, puede ser cualquier texto como Raíz, Root, etc.) nodo = TreeView1.Nodes.Add("Profesiones") For Each Registro In oTablaProfesiones.Rows ' agrego el nodo en el segundo nivel nodo = TreeView1.Nodes(0).Nodes.Add(Trim(Registro("descripcion"))) ' si no hay un nodo raiz, se usaría la siguiente línea 'nodo = TreeView1.Nodes.Add(Trim(Registro("RegionDescription"))) ' realizo un filtro dentro de la vista oVista.RowFilter = "cod_prof = " & Registro("cod_prof") ? ' ciclo para recorrer la vista previamente filtrada Dim a As Integer ? For a = 0 To oVista.Count - 1 ' agrego el nodo en el tercer nivel nodo.Nodes.Add(Trim(oVista.Item(a).Row("datos_perso"))) ? 'nodo.Nodes.Add(Trim(oVista.Item(a).Row("apellido"))) Next 'prueba = oTablaCandidatos.Rows(2)("cod_cand") ' expando todos los nodos de árbol secundario nodo.ExpandAll() Next ' habilita la actualización en pantalla del control TreeView TreeView1.EndUpdate() ' modifico la propiedad AllowDrop a True para poder realizar Drag and Drop TreeView1.AllowDrop = True ' modifico la propiedad Sorted a True para que los nodos estén ordenados TreeView1.Sorted = True ' MsgBox(prueba) End Sub
Cuando llenas el treeview no tienes que hacer eso allí Debes hacerlo en el evento que decidas DESPUÉS de llenado el treeview, por ejemplo el evento click te indica cual es el nodo seleccionado, en ese momento tomas el etxto, el fullpath o lo que necesites de ese nodo seleccionado.