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.