utilizar ejemplos dinamico control con como c# treeview

ejemplos - treeview con checkbox c#



Pregunta de ediciĆ³n de la etiqueta TreeView (2)

Tengo una vista de árbol con nodos como este: "Foo (1234)", y quiero permitir que el usuario cambie el nombre de los nodos, pero solo la parte de Foo, sin (1234). Primero intenté cambiar el texto del nodo en BeforeLabelEdit así:

private void treeView1_BeforeLabelEdit(object sender, NodeLabelEditEventArgs e) { e.Node.Text = "Foo"; }

Pero cuando hago clic en el nodo para editarlo, aparece "Foo (1234)" en el cuadro de texto.

Está bien, entonces probemos algo más.

Establecí treeView1.LabelEdit en falso y luego hago lo siguiente:

private void treeView1_MouseClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { if (treeView1.SelectedNode == treeView1.GetNodeAt(e.Location)) { treeView1.SelectedNode.Text = "Foo"; treeView1.LabelEdit = true; treeView1.SelectedNode.BeginEdit(); } } }

Y luego en AfterLabelEdit , configuro LabelEdit en falso.

¿Y adivina qué? Esto tampoco funciona. Cambia el texto del nodo a "Foo" pero el cuadro de texto de edición no aparece.

¿Algunas ideas? Gracias


Heh - Me di cuenta de eso hace unos años. Incluso dejé una sugerencia en Connect (¡vota por ella!) Para permitir que se cambie la etiqueta en BeforeLabelEdit.

Una opción (en WinForms - es una historia diferente en WPF) es usar pintura personalizada para sus TreeNodes para que la etiqueta real siga siendo "Foo" y usted dibuje el "(1234)" personalizado después de ella. Aunque es un poco doloroso hacerlo bien.


Finalmente, he encontrado una solución para esto en CodeProject . Entre los comentarios en la parte inferior, también encontrará una solución portátil.