Ejemplo n.º 1
0
        private void InterruptList_DragDrop(object sender, DragEventArgs e)
        {
            // グリッド内のD&Dなら並び替えをする
            // The mouse locations are relative to the screen, so they must be
            // converted to client coordinates.
            Point clientPoint = InterruptList.PointToClient(new Point(e.X, e.Y));
            // Get the row index of the item the mouse is below.
            int rowIndexOfItemUnderMouseToDrop =
                InterruptList.IndexFromPoint(new Point(clientPoint.X, clientPoint.Y));

            // If the drag operation was a move then remove and insert the row.
            if (e.Effect == DragDropEffects.Move && rowIndexOfItemUnderMouseToDrop != -1)
            {
                int    i = 0;
                int    k = 0;
                object work;
                if (rowIndexFromMouseDown < rowIndexOfItemUnderMouseToDrop)
                {
                    while (i < InterruptList.Items.Count)
                    {
                        if (InterruptList.GetSelected(i) == true)
                        {
                            work = InterruptList.Items[i - k];
                            InterruptList.Items[i - k] = InterruptList.Items[rowIndexOfItemUnderMouseToDrop];
                            InterruptList.Items[rowIndexOfItemUnderMouseToDrop] = work;
                            k++;
                        }
                        i++;
                    }
                }
                else
                {
                    i = InterruptList.Items.Count - 1;
                    k = 0;
                    while (i > 0)
                    {
                        if (InterruptList.GetSelected(i) == true)
                        {
                            work = InterruptList.Items[i + k];
                            InterruptList.Items[i + k] = InterruptList.Items[rowIndexOfItemUnderMouseToDrop];
                            InterruptList.Items[rowIndexOfItemUnderMouseToDrop] = work;
                            k++;
                        }
                        i--;
                    }
                }
            }
        }
Ejemplo n.º 2
0
 private void InterruptList_MouseDown(object sender, MouseEventArgs e)
 {
     // Get the index of the item the mouse is below.
     rowIndexFromMouseDown = InterruptList.IndexFromPoint(new Point(e.X, e.Y));
     if (rowIndexFromMouseDown != -1)
     {
         // Remember the point where the mouse down occurred.
         // The DragSize indicates the size that the mouse can move
         // before a drag event should be started.
         Size dragSize = SystemInformation.DragSize;
         // Create a rectangle using the DragSize, with the mouse position being
         // at the center of the rectangle.
         dragBoxFromMouseDown = new Rectangle(new Point(e.X - (dragSize.Width / 2),
                                                        e.Y - (dragSize.Height / 2)),
                                              dragSize);
     }
     else
     {
         // Reset the rectangle if the mouse is not over an item in the ListBox.
         dragBoxFromMouseDown = Rectangle.Empty;
     }
 }