integración_escritorio

TreeView – Aspecto Nativo

Similar al artículo anterior ListView – Aspecto Nativo, el control TreeView de Visual Studio carece del aspecto nativo presentado en el explorador de windows.

La implementación del aspecto nativo es el mismo que el utilizado en el ListView, con la excepción que este no presenta un borde punteado de color negro al recibir foco.


using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace TV_AspectoNativo
{
   class NativeTreeView : TreeView
   {
      [DllImport("uxtheme.dll", CharSet = CharSet.Unicode)]
      private extern static int SetWindowTheme(IntPtr hWnd, string pszSubAppName, string pszSubIdList);

      [DllImport("user32.dll")]
      public extern static int SendMessage(IntPtr hWnd, int wMsg, int wParam, int lParam);

      protected override void CreateHandle()
      {
         base.CreateHandle();
         // Aplicar el tema nativo del control TreeView
         SetWindowTheme(this.Handle, "explorer", null);
      }

      public NativeTreeView()
      {
         // Activar double buffering
          this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);

         // Habilitar el evento OnNotifyMessage para luego poder filtrar
         // el mensaje WM_ERASEBKGND antes de que sea procesado
         this.SetStyle(ControlStyles.EnableNotifyMessage, true);
      }

      protected override void OnNotifyMessage(Message m)
      {
         // Filtrar el mensaje WM_ERASEBKGND
         if (m.Msg != 0x14)
         {
            base.OnNotifyMessage(m);
         }
      }
   }
}

Ejemplo

El resultado es un control parecido al TreeView el cual puede ubicarse en la barra de componentes del proyecto. El control se utiliza de la misma manera que un TreeView de WindowsForms.

TreeView - Aspecto Nativo

Ejemplo – TreeView Aspecto Nativo

El proyecto utiliza el parte de los iconos creados por Martz90 – Clircle Icons Pack, enlaces al sitio de los iconos y licencia correspondiente dentro de la carpeta de iconos del proyecto ejemplo.

Un comentario sobre “TreeView – Aspecto Nativo”

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s