ADMINISTRACIÓN DE UN CONTROL TREEVIEW DESDE UN FORMULARIO WINDOWS
En el presente ejercicio veremos como podemos administrar un control treeview, para ello debemos seguir los siguientes pasos, pero antes definiremos una pequeña introducción a las llamadas de formulario utilizando DialogResult.
- Crearemos un proyectos Windows, el cual llamaremos WinTreeView.
- Dentro de este proyecto agregaremos un formulario llamado frmTreeView.
- A este formulario agregaremos los siguientes controles que se indican a continuación.
Button1 – Name = btnIngresar, FlatStyle = Flat, Text = “…”Button2 – Name = btnModificar, FlatStyle = Flat, Text = “…”
Button3– Name = btnEliminar, FlatStyle = Flat, Text = “…”
Button4 – Name = btnContinuar, FlatStyle = Flat, Text = “…”
Button5 – Name = btnCerrar, FlatStyle = Flat, Text = “…”
Label1 – Name = lblIngresar, Text = Ingresar nodo
Label2 – Name = lblModificar, Text = Modificar nodo
Label3 – Name = lblEliminar, Text = Eliminar nodo
Label4 – Name = lblContinuar, Text = Continuar ingresando nodos
Label5 – Name = lblCerrar, Text = Cerrar
Quedando de la siguiente forma:
- Agregaremos otro formulario, el cual llamaremos frmIngresarNodo, este formulario tendrá los siguientes controles:
Button1 – Name = btnAceptar, FlatStyle = Flat, Text = Aceptar
Button1 – Name = btnCancelar, FlatStyle = Flat, Text = Aceptar
TextBox1 – Name = txt, Text = “”
Label1 – Name = lblNodo, Text = Nodo
Quedando de la siguiente forma:
- En el método que atiende el evento load del formulario frmIngresarNodo definir la siguiente línea de código:
Me.txt.Text = ""
- En el método que atiende el evento clic del botón btnCancelar del formulario frmIngresarNodo, agregar las siguientes líneas de código:
Me.Close()
Me.Dispose()
- En el método que atiende el evento clic del botón btnAceptar del formulario frmIngresarNodo, agregar las siguientes líneas de código:
If Trim(Me.txt.Text) <> "" Then
Me.DialogResult = Windows.Forms.DialogResult.OK
Else
MessageBox.Show("Debe ingresar un valor")
End If
De aquí en adelante, todos los cambios de líneas de código se harán sobre el formulario frmTreeView.
- En el método que atiende el evento clic del botón btnCerrar Agregaremos las siguientes líneas de código:
Me.Close()
Me.Dispose()
- En el método que atiende el evento clic del botón btnIngresar agregaremos las siguientes líneas de código:
' creamos una llamada al formulario de carga de datos
Dim frm As New frmIngresarNodo
Dim resultado As DialogResult = frm.ShowDialog
If resultado = Windows.Forms.DialogResult.OK Then
Dim txt As String = frm.txt.Text
If Me.tvwAdmin.SelectedNode Is Nothing Then
'Agrega nodos a arbol
If f_NodoValidar(Me.tvwAdmin, txt) Then
Me.tvwAdmin.Nodes.Add(txt)
Else
MsgBox("El nombre de raiz ya se ha creado", _
MsgBoxStyle.Information, _
"Mensaje de Sistema")
End If
Else
'Agrega subnodos al arbol
Dim nNivel As TreeNode = _
New TreeNode(Me.tvwAdmin.SelectedNode.Text)
Me.tvwAdmin.SelectedNode = nNivel
If f_SubNodoValidar(Me.tvwAdmin.SelectedNode, txt) Then
Me.tvwAdmin.SelectedNode.Nodes.Add(txt)
Me.tvwAdmin.SelectedNode.Expand()
Else
MsgBox("El subnombre ya existe en el nombre seleccionado", _
MsgBoxStyle.Information, _
"Mensaje de Sistema")
End If
End If
End If
frm.Dispose()
frm = Nothing
- Adicionalmente agregaremos los siguientes métodos con sus respectivas líneas de código
Public Function f_NodoValidar(ByVal tvw As TreeView, ByVal txt As String) As Boolean
Dim Nodo As TreeNode
For Each Nodo In tvw.Nodes
If Nodo.Text = txt Then
Return False
End If
Next
Return True
End Function
Public Function f_SubNodoValidar(ByVal tvn As TreeNode, ByVal txt As String) As Boolean
Dim Nodo As TreeNode
For Each Nodo In tvn.Nodes
If Nodo.Text = txt Then
Return False
End If
Next
Return True
End Function
- En el método que atiende el evento clic del botón btnModificar, agregar las siguientes líneas de código:
' creamos una llamada al formulario de carga de datos
Dim frm As New frmIngresarNodo
If Me.tvwAdmin.SelectedNode Is Nothing Then
' despegar mensaje de que debe seleccionar el nodo
MessageBox.Show("Debe seleccionar un nodo", "Mensaje de Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
Dim resultado As DialogResult = frm.ShowDialog
If resultado = Windows.Forms.DialogResult.OK Then
' cambiar nombre del nodo
Me.tvwAdmin.SelectedNode.Text = frm.txt.Text
End If
End If
frm.Dispose()
frm = Nothing
- En el método que atiende el evento clic del botón btnEliminar, agregar las siguientes líneas de código:
If Me.tvwAdmin.SelectedNode Is Nothing Then
' despegar mensaje de que debe seleccionar el nodo
MessageBox.Show("Debe seleccionar un nodo", _
"Mensaje de Sistema", _
MessageBoxButtons.OK, _
MessageBoxIcon.Information)
Else
Me.tvwAdmin.SelectedNode.Remove()
End If
- En el método que atiende el evento clic del botón btnContinuar, agregar las siguientes líneas de código:
If Not Me.tvwAdmin.SelectedNode Is Nothing Then
Me.tvwAdmin.SelectedNode = Nothing
End If
Ejecutar la solución y probar la ejecución de la misma, observa como se comporta el manejo de nodos del treview.
No hay comentarios:
Publicar un comentario