Para ello se utilizará el texto TreeNode
donde la imagen debería haber sido, deshacerse de los espacios en blanco.
Deberá establecer la propiedad DrawMode
de TreeView
en OwnerDrawText
. Puede encontrar la propiedad DrawMode
en el panel de propiedades.
A continuación, cuando agrega un nodo, establezca que es ImageIndex
y SelectedImageIndex
mayor que el valor de su yourImageListName.Images.Count
valor. Esto es para que no se dibuje ninguna imagen, pero aún habrá espacio en blanco que no desea.
Ahora para deshacerse del espacio en blanco. Agregue un controlador para el evento treeviews DrawNode
. Esto se puede hacer yendo al panel de propiedades de TreeView y haciendo clic en el icono del panel que se parece a un perno de iluminación, luego desplácese hasta que vea el texto DrawNode
, haga doble clic en él.
Ahora sólo copiar y pegar 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);
¿Podría especificar si se utiliza en una web o la aplicación winforms, por favor? – splattne
Hecho - winforms. – Simon