Exemple #1
0
        private int GetRowIndexOfItemUnderMouseToDrop(DragEventArgs e)
        {
            // The mouse locations are relative to the screen, so they must be
            // converted to client coordinates.
            Point clientPoint = DataGridViewMapas.PointToClient(new Point(e.X, e.Y));

            // Get the row index of the item the mouse is below.
            return(DataGridViewMapas.HitTest(clientPoint.X, clientPoint.Y).RowIndex);
        }
Exemple #2
0
        //private int rowIndexOfItemUnderMouseToDrop;

        private void DataGridViewMapas_MouseMove(object sender, MouseEventArgs e)
        {
            if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
            {
                // If the mouse moves outside the rectangle, start the drag.
                if (dragBoxFromMouseDown != Rectangle.Empty &&
                    !dragBoxFromMouseDown.Contains(e.X, e.Y))
                {
                    // Proceed with the drag and drop, passing in the list item.
                    DragDropEffects dropEffect = DataGridViewMapas.DoDragDrop(
                        DataGridViewMapas.Rows[rowIndexFromMouseDown],
                        DragDropEffects.Move);
                    _ddSource = DragDropSource.Mapas;
                }
            }
        }
Exemple #3
0
        private void DataGridViewMapas_MouseDown(object sender, MouseEventArgs e)
        {
            // Get the index of the item the mouse is below.
            rowIndexFromMouseDown = DataGridViewMapas.HitTest(e.X, e.Y).RowIndex;
            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;
            }
        }
Exemple #4
0
        private void DataGridViewMapas_DragDrop(object sender, DragEventArgs e)
        {
            int rowIndexOfItemUnderMouseToDrop = GetRowIndexOfItemUnderMouseToDrop(e);

            // If the drag operation was a move then remove and insert the row.
            //          if (e.Effect == DragDropEffects.Move) {
            if (_ddSource == DragDropSource.Mapas)
            {
                DataGridViewRow rowToMove = e.Data.GetData(
                    typeof(DataGridViewRow)) as DataGridViewRow;
                if (rowToMove.Index == rowIndexOfItemUnderMouseToDrop)
                {
                    return;
                }
                _mapas[rowToMove.Index].Updated = true;
                if (rowToMove.Index > rowIndexOfItemUnderMouseToDrop)
                {
                    // Moving UP
                    _mapas[rowToMove.Index].Corredor = _mapas[rowIndexOfItemUnderMouseToDrop].Corredor;
                    for (int r = rowIndexOfItemUnderMouseToDrop; r < rowToMove.Index; r++)
                    {
                        _mapas[r].Corredor = _mapas[r].Corredor + 1;
                        _mapas[r].Updated  = true;
                    }
                }
                else
                {
                    // Moving DOWN
                    _mapas[rowToMove.Index].Corredor = _mapas[rowIndexOfItemUnderMouseToDrop].Corredor - 1;
                    for (int r = rowToMove.Index + 1; r < rowIndexOfItemUnderMouseToDrop; r++)
                    {
                        _mapas[r].Corredor = _mapas[r].Corredor - 1;
                        _mapas[r].Updated  = true;
                    }
                }
                var SortedList = _mapas.OriginalList.OrderBy(o => o.Corredor);
                _mapas = new SortableBindingList <clsMapa>();
                foreach (clsMapa mapa in SortedList)
                {
                    _mapas.Add(mapa);
                }
                _sourceMapas.DataSource              = _mapas;
                bindingSourceMapas.DataSource        = _sourceMapas;
                LojaBindingNavigatorSaveItem.Enabled = _mapas.Any(m => m.Updated);
            }
            else
            {
                if (e.Data.GetDataPresent(typeof(ListView.SelectedListViewItemCollection)))
                {
                    foreach (ListViewItem current in (ListView.SelectedListViewItemCollection)e.Data.GetData(typeof(ListView.SelectedListViewItemCollection)))
                    {
                        if (_ddSource == DragDropSource.ProdutosNoCorredor)
                        {
                            if (bindingSourceMapas.Position == rowIndexOfItemUnderMouseToDrop)
                            {
                                return;
                            }
                            _mapas[bindingSourceMapas.Position].ProdutoRemove(current);
                        }
                        _mapas[rowIndexOfItemUnderMouseToDrop].ProdutoAdd(current);
                        current.Remove();
                    }
                    DataGridViewMapas.Refresh();
                    LojaBindingNavigatorSaveItem.Enabled = true;
                }
            }
        }