public ContableAccountTreeNode AddAccount(ContableAccount account)
        {
            var node = new ContableAccountTreeNode(account);

            AccountNodesDictionary.Add(account.Id, node);
            TreeNode parentNode;

            if (!account.ParentAccountId.HasValue)
            {
                parentNode = RootNodesDictionary[account.AccountTreeId];
            }
            else if (AccountNodesDictionary.ContainsKey(account.ParentAccountId.Value))
            {
                parentNode = AccountNodesDictionary[node.ContableAccount.ParentAccountId.Value];
            }
            else
            {
                parentNode = null;
            }

            if (parentNode != null)
            {
                parentNode.Nodes.Add(node);
            }

            return(node);
        }
        private void treeView_ItemDrag(object sender, ItemDragEventArgs e)
        {
            //solo arastrar si es un ContableAccountTreeNode
            ContableAccountTreeNode contableAccountTreenode = e.Item as ContableAccountTreeNode;

            if (contableAccountTreenode != null)
            {
                treeView.DoDragDrop(contableAccountTreenode, DragDropEffects.Move);
            }
        }
        public void MoveNode(ContableAccountTreeNode node, FacturanetTreeNode parent)
        {
            node.Remove();

            var parentAsAccountTreeListItem = parent.Data as AccountTreeListItem;

            if (parentAsAccountTreeListItem != null)
            {
                node.ContableAccount.AccountTreeId   = parentAsAccountTreeListItem.Id;
                node.ContableAccount.ParentAccountId = null;
            }
            else
            {
                var parentAsContableAccount = parent.Data as ContableAccount;
                node.ContableAccount.AccountTreeId   = parentAsContableAccount.AccountTreeId;
                node.ContableAccount.ParentAccountId = parentAsContableAccount.Id;
            }

            parent.Nodes.Add(node);
        }