Capturar un clic en el icono de un TreeNode
Artículo por Club Developers · 09 mayo 2006
2159 vistas
Vamos a usar un TreeView (TreeView1) que tiene un ImageList asociado para sus TreeNodes.
Capturaremos el evento TreeView.MouseDown para recuperar las coordenadas del puntero del ratón.
El siguiente método (GetNodeIconeRectangle) permite calcular el Rectangle del icono del TreeNode seleccionado. Ahora sólo quedará mirar si el Point del puntero del ratón está en el icono del TreeNode seleccionado.
Capturaremos el evento TreeView.MouseDown para recuperar las coordenadas del puntero del ratón.
El siguiente método (GetNodeIconeRectangle) permite calcular el Rectangle del icono del TreeNode seleccionado. Ahora sólo quedará mirar si el Point del puntero del ratón está en el icono del TreeNode seleccionado.
csharp
using System; using System.Drawing; using System.Windows.Forms; private void TreeView1_MouseDown(object sender, MouseEventArgs e) { TreeNode selectedTreeNode = this.TreeView1.GetNodeAt(p); Rectangle imgRectangle; if (selectedTreeNode !=null) { imgRectangle = GetNodeIconeRectangle(selectedTreeNode) if (imgRectangle.Contains(p)) { // tratamiento } } } private Rectangle GetNodeIconeRectangle(TreeNode node) { Size s = node.TreeView.ImageList.ImageSize; int h = node.TreeView.ItemHeight; int x = node.Bounds.X - s.Width; int y = node.Bounds.Y + ((h - s.Height)/2); }