We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. (Last updated on: November 16, 2018).
Unfortunately, activation email could not send to your email. Please try again.
Syncfusion Feedback

How to enable column dragging when the ListBoxSelectionMode is set in WinForms GridControl?

Platform: WinForms |
Control: GridControl |
Published Date: April 30, 2011 |
Last Revised Date: December 18, 2019

Selection mode

By default, when you set the ListBoxSelection mode it disables the dragging of columns. This is by design, since the selection of rows in the ListBoxMode does not allow other types of selections (like selecting columns to drag them).

There are a couple of solutions. When you only want to support the SelectionMode, you can use the technique in the link (highlight-current-row-and-column) to highlight the single row, not using the SelectionMode and still enabling the dragging of columns through the property setting.

When you want to support the other SelectionMode setting, then you can derive the Grid and override the OnMouseDown and OnMouseUp events. You can turn off these ListBoxSelections while you are working with moving columns.

C#

public class mygridcontrol : GridControl
{
   public bool inselections = false;
   protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs e)
   {
      int row, col;
      //get the point of the mouse
      Point pt = this.PointToClient(Control.MousePosition);
      //get the current position
      bool colheader = this.PointToRowCol(pt,out row,out col, -1) && row == 0;
      if (colheader && !inselections)
      {
         this.ListBoxSelectionMode = SelectionMode.None;
      }
      else if (!colheader && inselections)
      {
         this.ListBoxSelectionMode=SelectionMode.MultiSimple;
         inselections = false;
      }
      base.OnMouseDown(e);
   }
   protected override void OnMouseUp(MouseEventArgs e)
   {
      int row, col;
     Point pt = this.PointToClient(Control.MousePosition);
     if (this.PointToRowCol(pt, out row, out col, -1) && row == 0)
     {
        if (!inselections)
           inselections = true;
        else
        {
           this.ListBoxSelectionMode = SelectionMode.MultiSimple;
           inselections = false;
        }
     }
     else
     {
        this.ListBoxSelectionMode = SelectionMode.MultiSimple;
        inselections = false;
     }
     base.OnMouseUp(e);
  }
}

VB

Public Class mygridcontrol Inherits GridControl
   Public inselections As Boolean = False
   Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
      Dim row, col As Integer
      'get the point of the mouse
      Dim pt As Point = Me.PointToClient(Control.MousePosition)
      'get the current position
      Dim colheader As Boolean = Me.PointToRowCol(pt,row,col, -1) AndAlso row = 0
      If colheader AndAlso (Not inselections) Then
         Me.ListBoxSelectionMode = SelectionMode.None
      ElseIf (Not colheader) AndAlso inselections Then
         Me.ListBoxSelectionMode=SelectionMode.MultiSimple
         inselections = False
      End If
      MyBase.OnMouseDown(e)
   End Sub
   Protected Overrides Sub OnMouseUp(ByVal e As MouseEventArgs)
       Dim row, col As Integer
       Dim pt As Point = Me.PointToClient(Control.MousePosition)
       If Me.PointToRowCol(pt, row, col, -1) AndAlso row = 0 Then
          If Not inselections Then
             inselections = True
          Else
             Me.ListBoxSelectionMode = SelectionMode.MultiSimple
             inselections = False
          End If
       Else
          Me.ListBoxSelectionMode = SelectionMode.MultiSimple
          inselections = False
       End If
       MyBase.OnMouseUp(e)
    End Sub
End Class

 

Samples:

C#: Column dragging in ListBoxSelectionMode

VB: Column dragging in ListBoxSelectionMode

2X faster development

The ultimate WinForms UI toolkit to boost your development speed.
ADD COMMENT
You must log in to leave a comment

Please sign in to access our KB

This page will automatically be redirected to the sign-in page in 10 seconds.

Up arrow icon

Warning Icon You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.Close Icon