2008-10-08 7 views
12

Tôi có một khung nhìn tre với các nút như sau: "Foo (1234)" và muốn cho phép người dùng đổi tên các nút, nhưng chỉ phần Foo, không có (1234). đầu tiên tôi đã cố gắng để thay đổi văn bản nút trong BeforeLabelEdit như thế này:Câu hỏi chỉnh sửa nhãn TreeView

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

Nhưng khi tôi nhấp vào nút để chỉnh sửa nó, "Foo (1234)" xuất hiện trong hộp văn bản.

OK, sau đó hãy thử cái gì khác.

tôi đặt treeView1.LabelEdit false, và sau đó thực hiện như sau:

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

Và sau đó trong AfterLabelEdit, tôi đặt LabelEdit trở lại sai.

Và hãy đoán xem? Điều này không hoạt động. Nó thay đổi văn bản nút thành "Foo" nhưng hộp soạn thảo không xuất hiện.

Bất kỳ ý tưởng nào? Cảm ơn

Trả lời

5

Cuối cùng tôi đã tìm thấy một solution cho điều này trên CodeProject. Trong số các ý kiến ​​ở phía dưới, bạn cũng sẽ tìm thấy một giải pháp di động.

4

Heh - Tôi đã đánh mất một vài năm trước đó. Tôi thậm chí còn để lại suggestion on Connect (bỏ phiếu cho nó!) Để cho phép nhãn được thay đổi trong BeforeLabelEdit.

Một tùy chọn (trong WinForms - đó là một câu chuyện khác trong WPF) là sử dụng vẽ tùy chỉnh cho TreeNodes của bạn để nhãn thực vẫn là "Foo" và bạn vẽ tùy chỉnh "(1234)" sau nó. Đó là một chút đau đớn để có được quyền mặc dù.

+0

Cảm ơn câu trả lời của bạn, tôi sẽ cố gắng làm điều đó bằng cách vẽ tùy chỉnh. Và tất nhiên tôi đã bình chọn cho đề xuất của bạn :) – neo2862