protected override void OnMouseMove(MouseEventArgs e)
        {
            AdvTree tree = GetTree();

            Point p = GetLayoutPosition(tree.Zoom, e.X, e.Y);
            ColumnHeader ch = tree.GetColumnAt(p.X, p.Y, _Columns);
            if (_MouseOverColumnHeader != ch)
            {
                if (_MouseOverColumnHeader != null)
                    _MouseOverColumnHeader.InternalMouseLeave(e);
                _MouseOverColumnHeader = ch;
                if (_MouseOverColumnHeader != null)
                {
                    _MouseOverColumnHeader.InternalMouseEnter(e);
                    Interop.WinApi.ResetHover(this);
                }
            }

            if (ch != null)
            {
                ch.InternalMouseMove(e);
            }

            if (e.Button == MouseButtons.Left && _MouseDownHeader != null && tree.AllowUserToReorderColumns && (Math.Abs(_MouseDownPoint.X-e.X)>1))
            {
                tree.StartColumnReorder(p.X, p.Y);
                return;
            }

            if (tree == null || e.Button != MouseButtons.None || !tree.AllowUserToResizeColumns) return;

            
            if (tree.CanResizeColumnAt(p.X, p.Y))
            {
                if (_OldCursor == null)
                {
                    _OldCursor = this.Cursor;
                    this.Cursor = Cursors.VSplit;
                }
            }
            else 
            {
                ReleaseCursor();
            }

            base.OnMouseMove(e);
        }