コード例 #1
0
        //-----------------------------------------------------------------------------------------
        private void moveNodeMode_update(Point _location)
        {
            if (!MoveNodeMode)
            {
                return;
            }

            m_moveNode_currentPos = _location;

            if (!m_moveNode_started)
            {
                int delta = Math.Abs(_location.X - m_moveNode_startPos.X);
                delta += Math.Abs(_location.Y - m_moveNode_startPos.Y);
                if (delta <= 5)
                {
                    return;
                }
                m_moveNode_started = true;
            }

            if (OverviewNode == null)
            {
                m_moveNode_enabled = false;
            }
            else if (OverviewNode == SelectedNode)
            {
                m_moveNode_enabled = false;
            }
            else if (SelectedNode.ParentNode == OverviewNode)
            {
                m_moveNode_enabled = false;
            }
            else if (SelectedNode.ContaintRecursive(OverviewNode))
            {
                m_moveNode_enabled = false;
            }
            else if (OverviewNode.Children.Count >= OverviewNode.Data.rightCapacity)
            {
                m_moveNode_enabled = false;
            }
            else
            {
                m_moveNode_enabled = true;
            }

            Cursor.Current = m_moveNode_enabled ? Cursors.Hand : Cursors.No;

            Refresh();
        }