internal void ProcessDrop(ColumnManagerCell draggedCell)
        {
            ColumnReorderingDragSourceManager manager = null;

            if (draggedCell != null)
            {
                manager = draggedCell.DragSourceManager as ColumnReorderingDragSourceManager;
            }

            if ((manager != null) && (manager.IsAnimatedColumnReorderingEnabled))
            {
                manager.CommitReordering();
            }
            else
            {
                int oldPosition = draggedCell.ParentColumn.VisiblePosition;
                int newPosition = this.ParentColumn.VisiblePosition;

                if (m_dropMarkAdorner != null)
                {
                    DropMarkAlignment alignment = m_dropMarkAdorner.Alignment;

                    this.HideDropMark();

                    if (draggedCell.ParentColumn.VisiblePosition < newPosition)
                    {
                        if (alignment == DropMarkAlignment.Near)
                        {
                            draggedCell.ParentColumn.VisiblePosition = newPosition - 1;
                        }
                        else
                        {
                            draggedCell.ParentColumn.VisiblePosition = newPosition;
                        }
                    }
                    else
                    {
                        if (alignment == DropMarkAlignment.Near)
                        {
                            draggedCell.ParentColumn.VisiblePosition = newPosition;
                        }
                        else
                        {
                            draggedCell.ParentColumn.VisiblePosition = newPosition + 1;
                        }
                    }

                    // This will force every Rows to update there layout
                    ColumnReorderingEventArgs e = new ColumnReorderingEventArgs(ColumnManagerCell.ColumnReorderingEvent, oldPosition, newPosition);
                    this.RaiseEvent(e);
                }
            }
        }
    internal void ProcessDrop( ColumnManagerCell draggedCell )
    {
      ColumnReorderingDragSourceManager manager = null;

      if( draggedCell != null )
      {
        manager = draggedCell.DragSourceManager as ColumnReorderingDragSourceManager;
      }

      if( ( manager != null ) && ( manager.IsAnimatedColumnReorderingEnabled ) )
      {
        manager.CommitReordering();
      }
      else
      {
        int oldPosition = draggedCell.ParentColumn.VisiblePosition;
        int newPosition = this.ParentColumn.VisiblePosition;

        if( m_dropMarkAdorner != null )
        {
          DropMarkAlignment alignment = m_dropMarkAdorner.Alignment;

          this.HideDropMark();

          if( draggedCell.ParentColumn.VisiblePosition < newPosition )
          {
            if( alignment == DropMarkAlignment.Near )
            {
              draggedCell.ParentColumn.VisiblePosition = newPosition - 1;
            }
            else
            {
              draggedCell.ParentColumn.VisiblePosition = newPosition;
            }
          }
          else
          {
            if( alignment == DropMarkAlignment.Near )
            {
              draggedCell.ParentColumn.VisiblePosition = newPosition;
            }
            else
            {
              draggedCell.ParentColumn.VisiblePosition = newPosition + 1;
            }
          }

          // This will force every Rows to update there layout
          ColumnReorderingEventArgs e = new ColumnReorderingEventArgs( ColumnManagerCell.ColumnReorderingEvent, oldPosition, newPosition );
          this.RaiseEvent( e );

        }
      }
    }