2008-10-08 14 views
12

Bunun gibi düğümlerle bir ağaç görüşüm var: "Foo (1234)" ve kullanıcının düğümleri yeniden adlandırmasına izin vermek istiyorum, ancak yalnızca Foo bölümü (1234) olmadan.TreeView etiket düzenleme sorusu

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

Ama bunu düzenlemek için düğüm tıkladığınızda, "Foo (1234)" metin görüntülenir: Ben ilk böyle BeforeLabelEdit yılında düğüm metni değiştirmek için çalıştı.

Tamam, o zaman başka bir şey deneyelim.

Aşağıdaki sonra do false treeView1.LabelEdit ayarlayın ve: o zaman

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(); 
     } 
    } 
} 

Ve AfterLabelEdit yılında, ben yanlış geri LabelEdit ayarlayın.

Ve ne olduğunu tahmin edin? Bu da işe yaramıyor. Düğüm metnini "Foo" olarak değiştirir, ancak düzenleme metin kutusu görünmez.

Herhangi bir fikrin var mı? Teşekkürler

cevap

5

Sonunda CodeProject için solution buna sahibim. Alttaki yorumlar arasında ayrıca taşınabilir bir çözüm bulacaksınız.

4

Heh - Bunu birkaç yıl önce gördüm. Etiketin BeforeLabelEdit içinde değiştirilmesine izin vermek için bir suggestion on Connect (oy verin!) Bile bıraktım.

Bir seçenek (WinForms'de - bu WPF'de farklı bir hikaye) TreeNode'larınız için özel bir resim kullanmaktır, böylece gerçek etiket hala "Foo" olur ve sizden özel olarak "(1234)" çizersiniz. Olmak için biraz acı çekiyor.

+0

Cevabınız için teşekkürler, özel boyama ile yapmaya çalışacağım. Ve tabiki önerilerinize oy verdim :) – neo2862