Girevik |
нужны изменения дерева: удаление узла, изменение, перемещение причем, нужно вставить обработку перед этими действиями... |
BeforeLabelEdit - это на изменение узла
DragOver - при перетаскивании можно не давать перетаскивать если нельзя вот пример как это делать
private void treeOrgs_DragOver(object sender, DragEventArgs e) {
Boolean isGood = true;
COrgTreeNode dragOverNode = (COrgTreeNode)treeOrgs.GetNodeAt(treeOrgs.PointToClient(new Point(e.X, e.Y)));
if(dragOverNode != null)
treeOrgs.SelectedNode = dragOverNode;
e.Effect = DragDropEffects.None;
if(e.Data.GetDataPresent(typeof(DataRow))) {
DataRow DragedRow = (DataRow)e.Data.GetData(typeof(DataRow));
if(dragOverNode.OrgID != null)
e.Effect = DragDropEffects.Copy;
}else if(e.Data.GetDataPresent(typeof(COrgTreeNode))) {
COrgTreeNode dragedNode = (COrgTreeNode)e.Data.GetData(typeof(COrgTreeNode));
if(dragOverNode == null) return;
TreeNode findIt = dragOverNode;
while(findIt != null) {
findIt = findIt.Parent;
if(findIt == dragedNode) {
isGood = false;
break;
}
}
if(isGood &&
(dragOverNode != dragedNode) &&
(dragOverNode.Parent != dragedNode) &&
(dragOverNode != dragedNode.Parent)) {
e.Effect = DragDropEffects.Copy;
}
}
}
А удаление как ты делаешь при нажатии кнопки или из меню выбираешь? Вообщем перед кодом удаления вставь просто проверку которая тебе нужна.