2012-04-28 6 views
2

У меня есть дерево, где я разрешаю пользователям создавать новые узлы дерева. Когда они создают узел дерева, я автоматически перехожу в режим редактирования. Я пытаюсь сохранить имя, указанное узлу дерева после завершения редактирования в «AfterLabelEdit».Получение текста treenode после редактирования

Я обнаружил, что проверка метки в этом методе возвращает исходную метку, потому что она, кажется, не привязана к дереву до тех пор, пока метод не завершится.

Как я могу получить новый ярлык после редактирования? Есть ли способ заставить изменения совершить в этом методе?

Надеюсь, что имеет смысл!

ответ

12

Фактический текст узла не изменяется до тех пор, пока не завершится событие AfterLabelEvent. Событие передает новый текст ярлыка в свойстве e.Label. Это то, что ты хочешь.

Стандартный трюк для борьбы с неаккуратными событиями TreeView заключается в том, чтобы отложить действие до завершения события. Элегантно сделано с помощью метода Control.BeginInvoke():

private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) { 
     this.BeginInvoke(new Action(() => afterAfterEdit(e.Node))); 
    } 
    private void afterAfterEdit(TreeNode node) { 
     string txt = node.Text; // Now it is updated 
     // etc.. 
    } 
+0

Совершенная - именно то, что я пытался поймайте мою слабую голову. Приветствия. – Simon

+0

Фантастический - приятный и простой. – Andy

Смежные вопросы