перетаскивание не работает, заставляя курсор показывать, не может сделать этот значок - PullRequest
0 голосов
/ 22 мая 2019

У меня возникла проблема, когда при перетаскивании отображается значок no, и я не могу перетаскивать свои данные из моего представления данных.

Я пробовал многие вещи, в основном просто код других людей, однако я устал от того, что они не работают, поэтому я написал свой собственный, используя этот код ..

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WinformsTest
{
    public partial class LayerForm : Form
    {

        public BindingList<Layer> Items = new BindingList<Layer>();
        private int dragDropItemDragIndex;
        private int dragDropItemDropIndex;



        public LayerForm()
        {
            InitializeComponent();
            dataGridView1.DataSource    = Items;
            //dataGridView1.RowPrePaint  += new DataGridViewRowPrePaintEventHandler(dgv_RowPrePaint);
        }

        //Toolstrip menu
        private void addToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Items.Add(new Layer());
            dataGridView1.Columns[0].Width        = 24;
            dataGridView1.Columns[0].MinimumWidth = 24;
            dataGridView1.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
        }

        //Drag and drop
        private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
        {
            var pointInfo = dataGridView1.HitTest(e.X, e.Y);
            if (pointInfo.RowIndex != -1 && pointInfo.ColumnIndex != -1)
            {
                DoDragDrop(null, DragDropEffects.Move); //null because we handle the value through the swap method

                dragDropItemDragIndex = pointInfo.RowIndex;
                dragDropItemDropIndex = pointInfo.RowIndex;
            }
        }
        private void dataGridView1_DragDrop(object sender, DragEventArgs e)
        {
            var point = dataGridView1.PointToClient(new Point(e.X, e.Y));
            var pointInfo = dataGridView1.HitTest(point.X, point.Y);
            if (pointInfo.RowIndex != -1 && pointInfo.ColumnIndex != -1)
            {
                e.Effect = DragDropEffects.Move;

                dragDropItemDropIndex = pointInfo.RowIndex;
                Swap(dragDropItemDragIndex, dragDropItemDropIndex);
            }
        }
        private void dataGridView1_DragEnter(object sender, DragEventArgs e)
        {
            var point = dataGridView1.PointToClient(new Point(e.X, e.Y));
            var pointInfo = dataGridView1.HitTest(point.X, point.Y);
            if (pointInfo.RowIndex != -1 && pointInfo.ColumnIndex != -1)
            {
                e.Effect = DragDropEffects.Move;

                dragDropItemDropIndex = pointInfo.RowIndex;
                Swap(dragDropItemDragIndex, dragDropItemDropIndex);
            }
        }
        private void Swap(int oldIndex, int newIndex)
        {
            var itemOld = Items[oldIndex];
            var itemNew = Items[newIndex];
            Items[oldIndex] = itemNew;
            Items[newIndex] = itemOld;
        }
    }
}

Мой ожидаемый результат заключается в том, что элементы меняются, когда я перетаскиваю их. Я также ожидаю, что мышь превратится в значок перетаскивания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...