TreeView - изменение дерева

Girevik
Дата: 21.01.2010 15:05:51
Как можно отловить событие изменения дерева в TreeView??
Необходимо вставить обработку перед этими изменениями.
_Novichok
Дата: 21.01.2010 20:57:13
Girevik,

обработчики событий BeforeSelect, BeforeExpand, может это?
PeaceDeads
Дата: 22.01.2010 14:27:09
BeforeLabelEdit - не подходит?
PeaceDeads
Дата: 22.01.2010 14:29:36
также можно попробывать на Validating
Girevik
Дата: 22.01.2010 14:41:50
PeaceDeads
BeforeLabelEdit - не подходит?


это только изменение узла..
нужно любое изменение дерева...
PeaceDeads
Дата: 22.01.2010 14:49:55
Girevik
PeaceDeads
BeforeLabelEdit - не подходит?


это только изменение узла..
нужно любое изменение дерева...

Какие именно изменения? Ну так и вешай на все сабытия которые относятсяк изменениям. Validating,
DragDrop, controlRemove,ControlAdded и т.д.
Girevik
Дата: 22.01.2010 14:56:54
нужны изменения дерева: удаление узла, изменение, перемещение
причем, нужно вставить обработку перед этими действиями...
PeaceDeads
Дата: 22.01.2010 15:08:45
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;
        }
      }
    } 
А удаление как ты делаешь при нажатии кнопки или из меню выбираешь? Вообщем перед кодом удаления вставь просто проверку которая тебе нужна.