Beispiel #1
0
            private void OnDrop_MoveNode(TreeTreeNode <T> _dst, TreeNode src, TreeNodeDDTarget target)
            {
                TreeTreeNode <T> _src = src as TreeTreeNode <T>;

                if (_src == null)
                {
                    return;
                }

                T dval = _dst.Value;

                switch (target)
                {
                case TreeNodeDDTarget.Self:
                    dval.Nodes.Add(_src.Value);
                    _dst.Nodes.Add(_src);
                    break;

                case TreeNodeDDTarget.Child:
                    dval.Nodes.Insert(0, _src.Value);
                    _dst.Nodes.Insert(0, _src);
                    break;

                case TreeNodeDDTarget.Prev:
                    dval.Parent.Nodes.Insert(dval.Parent.Nodes.IndexOf(dval), _src.Value);
                    _dst.ParentNode.Nodes.InsertBefore(_dst, _src);
                    break;

                case TreeNodeDDTarget.Next:
                    dval.Parent.Nodes.Insert(dval.Parent.Nodes.IndexOf(dval) + 1, _src.Value);
                    _dst.ParentNode.Nodes.InsertAfter(_dst, _src);
                    break;
                }
            }
Beispiel #2
0
            //-----------------------------------------------------------------------
            // OnDrop
            //-----------------------------------------------------------------------
            /// <summary>
            /// ドロップ処理を実行します。
            /// </summary>
            /// <param name="node">処理対象のノードを指定します。</param>
            /// <param name="e">ドラッグの情報を指定します。</param>
            public override void OnDrop(TreeNode node, TreeNodeDragEventArgs e)
            {
                TreeTreeNode <T> _dst   = node as TreeTreeNode <T>;
                TreeNodeDDTarget target = this.GetTarget(node, e);

                switch (e.Effect & this.GetEffect(node, e))
                {
                case Forms::DragDropEffects.Move: {
                    TreeNode node2 = e.Data.GetData("afh.Forms.TreeNode") as TreeNode;
                    if (node2 != null)
                    {
                        this.OnDrop_MoveNode(_dst, node2, target);
                        break;
                    }

                    Gen::List <TreeNode> list = e.Data.GetData("afh.Forms.TreeNode:List") as Gen::List <TreeNode>;
                    if (list != null)
                    {
                        this.OnDrop_MoveList(_dst, list, target);
                        break;
                    }

                    break;
                }

                case Forms::DragDropEffects.Link:
                case Forms::DragDropEffects.Copy:
                    throw new System.NotImplementedException();

                default:
                    break;
                }
            }
Beispiel #3
0
 private void OnDrop_MoveList(TreeTreeNode <T> _dst, Gen::List <TreeNode> list, TreeNodeDDTarget target)
 {
     _todo.TreeNodeDisplayHeight("TreeNodeCollection.Suppress: ノードリストの幾何再計算・再描画を抑止");
     _todo.TreeNodeDisplayHeight("target==Child の時は AddRange を利用する様にする?");
     using (_dst.Nodes.SuppressLayout())
         foreach (TreeNode node3 in list)
         {
             this.OnDrop_MoveNode(_dst, node3, target);
         }
 }