示例#1
0
文件: TreeModel.cs 项目: Ejik/Acotwin
 internal void OnNodesChanged(TreeModelEventArgs args)
 {
     if (NodesChanged != null)
         NodesChanged(this, args);
 }
示例#2
0
 private void ClearNodesSize(TreeModelEventArgs e, TreeNodeAdv parent)
 {
     if (e.Indices != null)
     {
         foreach (int index in e.Indices)
         {
             if (index >= 0 && index < parent.Nodes.Count)
             {
                 TreeNodeAdv node = parent.Nodes[index];
                 node.Height = node.RightBounds = null;
             }
             else
                 throw new ArgumentOutOfRangeException("Index out of range");
         }
     }
     else
     {
         foreach (TreeNodeAdv node in parent.Nodes)
         {
             foreach (object obj in e.Children)
                 if (node.Tag == obj)
                 {
                     node.Height = node.RightBounds = null;
                 }
         }
     }
 }
示例#3
0
文件: TreeModel.cs 项目: Ejik/Acotwin
 internal void OnNodeRemoved(Node parent, int index, Node node)
 {
     if (NodesRemoved != null)
     {
         TreeModelEventArgs args = new TreeModelEventArgs(GetPath(parent), new int[] { index }, new object[] { node });
         NodesRemoved(this, args);
     }
 }
示例#4
0
        private void _model_NodesInserted(object sender, TreeModelEventArgs e)
        {
            if (e.Indices == null)
                throw new ArgumentNullException("Indices");

            TreeNodeAdv parent = FindNode(e.Path);
            if (parent != null)
            {
                for (int i = 0; i < e.Children.Length; i++)
                    AddNewNode(parent, e.Children[i], e.Indices[i]);
            }
            SmartFullUpdate();
        }
示例#5
0
 private void _model_NodesRemoved(object sender, TreeModelEventArgs e)
 {
     TreeNodeAdv parent = FindNode(e.Path);
     if (parent != null)
     {
         if (e.Indices != null)
         {
             List<int> list = new List<int>(e.Indices);
             list.Sort();
             for (int n = list.Count - 1; n >= 0; n--)
             {
                 int index = list[n];
                 if (index >= 0 && index <= parent.Nodes.Count)
                     parent.Nodes.RemoveAt(index);
                 else
                     throw new ArgumentOutOfRangeException("Index out of range");
             }
         }
         else
         {
             for (int i = parent.Nodes.Count - 1; i >= 0; i--)
             {
                 for (int n = 0; n < e.Children.Length; n++)
                     if (parent.Nodes[i].Tag == e.Children[n])
                     {
                         parent.Nodes.RemoveAt(i);
                         break;
                     }
             }
         }
     }
     UpdateSelection();
     SmartFullUpdate();
 }
示例#6
0
 private void _model_NodesChanged(object sender, TreeModelEventArgs e)
 {
     TreeNodeAdv parent = FindNode(e.Path);
     if (parent != null && parent.IsVisible  && parent.IsExpanded)
     {
         if (InvokeRequired)
             Invoke(new UpdateContentWidthDelegate(ClearNodesSize), e, parent);
         else
             ClearNodesSize(e, parent);
         SmartFullUpdate();
     }
 }
示例#7
0
 void _innerModel_NodesRemoved(object sender, TreeModelEventArgs e)
 {
     OnStructureChanged(new TreePathEventArgs(e.Path));
 }
示例#8
0
 private void _model_NodesChanged(object sender, TreeModelEventArgs e)
 {
     TreeNodeAdv parent = FindNode(e.Path);
     if (parent != null)
     {
         if (e.Indices != null)
         {
             foreach (int index in e.Indices)
             {
                 if (index >= 0 && index < parent.Nodes.Count)
                 {
                     TreeNodeAdv node = parent.Nodes[index];
                     Rectangle rect = GetNodeBounds(node);
                     _contentWidth = Math.Max(_contentWidth, rect.Right);
                 }
                 else
                     throw new ArgumentOutOfRangeException("Index out of range");
             }
         }
         else
         {
             foreach (TreeNodeAdv node in parent.Nodes)
             {
                 foreach (object obj in e.Children)
                     if (node.Tag == obj)
                     {
                         Rectangle rect = GetNodeBounds(node);
                         _contentWidth = Math.Max(_contentWidth, rect.Right);
                     }
             }
         }
     }
     SafeUpdateScrollBars();
     UpdateView();
 }
示例#9
0
 public void OnNodeRemoved(TreeModelEventArgs args)
 {
     if (NodesRemoved != null)
         NodesRemoved(this, args);
 }
示例#10
0
 public void OnNodeInserted(TreeModelEventArgs args)
 {
     if (NodesInserted != null)
         NodesInserted(this, args);
 }