private void _ProjectTree_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) { if (!IsProjectOpen()) { return; } try { if (e.Label == null) //Determine if lable has changed. { e.CancelEdit = true; return; } if (e.Label == null || e.Label.Length == 0) { e.CancelEdit = true; MessageBox.Show("The object cannot be empty."); return; } ProjectTreeNode node = (ProjectTreeNode)e.Node; if (!CloseAffectedProjectTabs((ProjectTreeNode)e.Node)) { e.CancelEdit = true; return; } ProjectTreeNode projectNode = GetProjectNode(); string projectPath = Path.GetDirectoryName(ProjectFileName); string oldLineage = (projectPath + "\\" + node.FileLineage()).Replace("\\\\", "\\"); //string nodeText = (e.Label == null || e.Label.Length == 0) ? e.Node.Text : e.Label; string nodeText = e.Label; if (!Path.HasExtension(nodeText)) { if (Path.HasExtension(e.Node.Text)) { nodeText = nodeText + Path.GetExtension(e.Node.Text); } } string newLineage = node.Parent == null ? null : (projectPath + "\\" + ((ProjectTreeNode)node.Parent).FileLineage() + "\\" + nodeText).Replace("\\\\", "\\"); if (node.BasicNodeType == ProjectTreeNode.BasicNodeTypes.Folder) { if (Directory.Exists(oldLineage)) { Directory.Move(oldLineage, newLineage); } else { Directory.CreateDirectory(newLineage); } } else if (node.BasicNodeType == ProjectTreeNode.BasicNodeTypes.File) { if (System.IO.File.Exists(oldLineage)) { System.IO.File.Move(oldLineage, newLineage); } node.NodeType = ProjectTreeNode.DetermineNodeType(nodeText); } e.CancelEdit = true; //Were going to change the text manually (below) cancel the automatic update. e.Node.Text = nodeText; } catch (Exception ex) { MessageBox.Show(ex.Message); e.CancelEdit = true; } SaveProjectFile(); }