Уже довольно поздно, чтобы ответить на этот вопрос, но вот другое решение:
1) Удалите часть, которую вы не хотите, чтобы пользователь не редактировал, надписью узла прямо перед вызовом BeginEdit ()
2) В AfterLabelEdit () установите текст узла так, как вы хотите, и установите NodeLabelEditEventArgs.CancelEdit = true, чтобы пользовательский ввод текста не заменял текст, который вы установили
private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Node == null) return;
e.Node.Text = e.Node.Text.Substring(3, e.Node.Text.Length - 3);
e.Node.BeginEdit();
}
private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
{
e.Node.Text = "S :" + e.Label;
e.CancelEdit = true;
}