none
Cabiar de color el fondo de los nodos de un treeview1 pasando el raton RRS feed

  • Pregunta

  • Buenas, como puedo hacer para cuando pase el raton por los nodos del treeview1 el backcolor de los mismos cambien a este color 33; 33; 33 y cuando de click sobre el nodo cambie a este 118; 184; 61

    Gracias

    domingo, 11 de marzo de 2018 22:52

Respuestas

  • Para que se resalte de un color particular, hay que controlar el evento DrawNode del TreeView.  No quise programar un ejemplo, pero es fácil encontrar en la web.  Aquí le dejo uno que se implementa en la forma de una nueva clase, pero eso no es realmente necesario a menos que quiera reutilizar el código en más proyectos.

    En cuanto a cambiar el color del nodo seleccionado, trate usando los eventos del TreeView llamados BeforeSelect y AfterSelect.  El primero ocurre antes de que suceda la selección, y el segundo después.  Entonces en BeforeSelect quitamos el color de fondo y en AfterSelect lo ponemos.  El nodo tiene una propiedad llamada BackColor.

    private void tv_BeforeSelect(object sender, TreeViewEventArgs e)
    {
        if (tv.SelectedNode != null)
        {
            tv.SelectedNode.BackColor = <color original aquí>;
        }
        //Lo anterior puede resumirse en una línea si tiene el C# más reciente.
        tv.SelectedNode?.BackColor = <color original aquí>;
    }
    
    private void tv_AfterSelect(object sender, TreeViewEventArgs e)
    {
        if (tv.SelectedNode != null)
        {
            tv.SelectedNode.BackColor = <color de selección aquí>;
        }
        //Lo anterior puede resumirse en una línea si tiene el C# más reciente.
        tv.SelectedNode?.BackColor = <color de selección aquí>;
    }
    

    No probé el código.  Espero que le funcione.


    Jose R. MCP
    Code Samples

    • Marcado como respuesta Diablo_Rojo lunes, 12 de marzo de 2018 17:28
    lunes, 12 de marzo de 2018 0:22
    Moderador

Todas las respuestas

  • Para que se resalte de un color particular, hay que controlar el evento DrawNode del TreeView.  No quise programar un ejemplo, pero es fácil encontrar en la web.  Aquí le dejo uno que se implementa en la forma de una nueva clase, pero eso no es realmente necesario a menos que quiera reutilizar el código en más proyectos.

    En cuanto a cambiar el color del nodo seleccionado, trate usando los eventos del TreeView llamados BeforeSelect y AfterSelect.  El primero ocurre antes de que suceda la selección, y el segundo después.  Entonces en BeforeSelect quitamos el color de fondo y en AfterSelect lo ponemos.  El nodo tiene una propiedad llamada BackColor.

    private void tv_BeforeSelect(object sender, TreeViewEventArgs e)
    {
        if (tv.SelectedNode != null)
        {
            tv.SelectedNode.BackColor = <color original aquí>;
        }
        //Lo anterior puede resumirse en una línea si tiene el C# más reciente.
        tv.SelectedNode?.BackColor = <color original aquí>;
    }
    
    private void tv_AfterSelect(object sender, TreeViewEventArgs e)
    {
        if (tv.SelectedNode != null)
        {
            tv.SelectedNode.BackColor = <color de selección aquí>;
        }
        //Lo anterior puede resumirse en una línea si tiene el C# más reciente.
        tv.SelectedNode?.BackColor = <color de selección aquí>;
    }
    

    No probé el código.  Espero que le funcione.


    Jose R. MCP
    Code Samples

    • Marcado como respuesta Diablo_Rojo lunes, 12 de marzo de 2018 17:28
    lunes, 12 de marzo de 2018 0:22
    Moderador
  • Gracias por responder WebJose

    lo he paso a vb.net por que no trabajo en c

    este es el codigo resultante 

    Private Sub TreeView1_BeforeSelect(sender As Object, e As TreeViewCancelEventArgs) Handles TreeView1.BeforeSelect
            If (Not (TreeView1.SelectedNode) Is Nothing) Then
                Dim original As Color = Color.Black
            End If
    
            '' ''Lo anterior puede resumirse en una l�nea si tiene el C# m�s reciente.
            ' ''Dim original As Color
        End Sub
        Private Sub TreeView1_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles TreeView1.AfterSelect
            If (Not (TreeView1.SelectedNode) Is Nothing) Then
                Dim de As Color = Color.Aqua
                Dim n As selecci
            End If
    
            ' ''Lo anterior puede resumirse en una l�nea si tiene el C# m�s reciente.
            ''Dim de As Color
            ''Dim n As selecci
        End Sub

    No se que tengo que hacer con esta parte 

    Dim n As selecci

    lunes, 12 de marzo de 2018 6:56