seleccionado obtener nodo net ejemplos ejemplo dinamico control asp c# .net winforms treeview

obtener - treeview c# ejemplos



¿Cómo configuro una imagen para algunos nodos en un TreeView? (6)

Intenté esto una vez y no creo que sea posible.

Si intenta establecer tanto ImageKey como ImageIndex en ImageIndex "no establecidos", el control simplemente establece ImageIndex en 0. El siguiente código:

treeView.ImageKey = "Value"; Debug.WriteLine(treeView.ImageIndex); treeView.ImageKey = null; Debug.WriteLine(treeView.ImageIndex); treeView.ImageIndex = -1; Debug.WriteLine(treeView.ImageIndex);

Produce salida:

-1 0 0

Este tipo de información le dice que los desarrolladores de control querían asegurarse de que siempre haya una imagen predeterminada. Eso me deja con las opciones de pirateo, me temo.

Tengo un control de formularios Windows TreeView con una ImageList , y quiero que algunos de los nodos muestren imágenes, pero los demás no tienen imágenes.

No quiero un espacio en blanco donde debería estar la imagen. No quiero una imagen que se parezca a las líneas que dibujaría TreeView si no tuviera una ImageList. ¿Cómo hago para dibujar imágenes de algunos elementos y no de otros, sin recurrir a hackers torpes como ese?


Lo que he elegido hacer es usar una imagen de puntos para esos nodos TreeView que no se supone que tienen una imagen.

Agrego esta imagen como la última imagen en la lista, y si no se supone que el elemento tenga una imagen, lo configuré en ImageList.Images.Count-1


ImageIndex establecer ImageIndex y SelectedImageIndex en un número que sea más alto que el número de valores en su ImageList . Por ejemplo, si crea este nodo y lo agrega a su TreeView :

TreeNode node1 = new TreeNode(string.Empty, 12, 12); // imageList1.Count = 5

TreeNode un TreeNode invisible insertado en tu TreeView . Cambié el color de fondo de mi TreeView y todavía era invisible.

(Busqué en Google esto por algún tiempo, y finalmente encontré la respuesta aquí: http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.framework.windowsforms/2006-09/msg00322.html )


Esto dibujará el texto TreeNode donde debería haber estado la imagen, TreeNode el espacio en blanco.

Deberá establecer la propiedad DrawMode TreeView en OwnerDrawText . Puede encontrar la propiedad DrawMode en el panel de propiedades.

Luego, cuando agrega un nodo, configure su ImageIndex y SelectedImageIndex mayores que el valor de su valor de yourImageListName.Images.Count . Esto es para que no se dibuje ninguna imagen, pero aún habrá espacio en blanco que no desea.

Ahora para deshacerte del espacio en blanco. Agregue un controlador para el evento DrawNode de DrawNode . Para ello, vaya al panel de propiedades de TreeView y haga clic en el icono del panel que se parece a un perno de iluminación, luego desplácese hasta que vea el texto DrawNode y haga doble clic en él.

Ahora solo copie y pegue esto en el método creado

if (e.Node.ImageIndex >= e.Node.TreeView.ImageList.Images.Count) // if there is no image { int imagewidths = e.Node.TreeView.ImageList.ImageSize.Width; int textheight = TextRenderer.MeasureText(e.Node.Text, e.Node.NodeFont).Height; int x = e.Node.Bounds.Left - 3 - imagewidths / 2; int y = (e.Bounds.Top + e.Bounds.Bottom) / 2+1; Point point = new Point(x - imagewidths/2, y - textheight/2); // the new location for the text to be drawn TextRenderer.DrawText(e.Graphics, e.Node.Text, e.Node.NodeFont, point, e.Node.ForeColor); } else // drawn at the default location TextRenderer.DrawText(e.Graphics, e.Node.Text, e.Node.TreeView.Font, e.Bounds, e.Node.ForeColor);


Hei hermano, encontré la manera. Establezca la primera imagen como una imagen vacía, como esta ...

TreeView treeView = new TreeView(); treeView.ImageList.Images.Add(new Bitmap(1,1));

Entonces, el índice 0 es una imagen vacía. espero que esto ayude


Descubrí que usar StateImageList en TreeView en lugar de ImageList solo mostrará la imagen cuando StateImageIndex en TreeNode sea igual o mayor que 0