2008-10-08 97 views
12

我有一個像這樣的節點樹狀圖:「Foo(1234)」,並希望允許用戶重命名節點,但只有Foo部分,沒有(1234)。我第一次嘗試更改節點文本BeforeLabelEdit這樣的:TreeView標籤編輯問題

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

但是當我點擊節點進行編輯時,「富(1234)」出現在文本框中。

好的,那我們試試其他的。

我設置treeView1.LabelEdit爲false,然後執行以下操作:

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

然後在AfterLabelEdit,我設置LabelEdit爲false。

你猜怎麼着?這也不起作用。它將節點文本更改爲「Foo」,但不顯示編輯文本框。

任何想法? 謝謝

回答

5

最後,我在CodeProject上發現了一個solution。在底部的評論中,您還會發現一種便攜式解決方案。

4

嘿 - 我在幾年前就發現了一個。我甚至留下了suggestion on Connect(投票贊成!)以允許在BeforeLabelEdit中更改標籤。

一個選項(在WinForms中 - 這是WPF中的一個不同的故事)是爲您的TreeNodes使用自定義繪畫,以便實際標籤仍然是「Foo」,並且您自定義後面會繪製「(1234)」。雖然這樣做確實有點痛苦。

+0

感謝您的回答,我會盡力使用自定義繪畫。 當然我投你的建議:) – neo2862 2008-10-08 09:44:38