Событие DragDrop не возбуждено - PullRequest
2 голосов
/ 06 ноября 2010

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

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            pictureBox1.MouseDown += new MouseEventHandler(pictureBox1_MouseDown);
            panel1.DragDrop +=new DragEventHandler(panel1_DragDrop);
            panel1.DragOver +=new DragEventHandler(panel1_DragOver);
        }

        private void panel1_DragOver(object sender, DragEventArgs e)
        {
            Console.WriteLine("DragOver");
        }

        private void panel1_DragDrop(object sender, DragEventArgs e)
        {
            Console.WriteLine("DragDrop");
        }

        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            Console.WriteLine("Mouse");
            pictureBox1.DoDragDrop(pictureBox1.Text, DragDropEffects.All);
        }
    }

Я также установил AllowDrop панели и формы в значение true.DragOver и MouseDown подняты.Кроме того, когда я перетаскиваю изображение, курсор становится заштрихованным кружком, как будто это была недопустимая операция.Есть ли способ, которым курсор становится изображением в графическом окне?Я не хочу, чтобы картинка перемещалась, только чтобы добавить элемент на панель.

Ответы [ 2 ]

5 голосов
/ 18 декабря 2013

Проблема легко решается.

Вы должны просто установить в DragEnter соответствующий эффект:

private void Form1_DragEnter(object sender, DragEventArgs e)
{
    e.Effect = DragDropEffects.All;
}

После этого событие DragDrop срабатывает корректно.

0 голосов
/ 06 ноября 2010

Ричард, проблема в том, что перетаскивание - не такая простая операция, как вы здесь написали. Здесь вы не начали движение перетаскивания, которое должно начинаться с кода, и вы можете прочитать больше об этом здесь ... http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dodragdrop(v=VS.90).aspx

Если вы просто хотите переместить PictureBox ... , перетаскивая Picturebox внутри winform во время выполнения

И, наконец, Перетаскивание между экземплярами одного и того же приложения Windows Forms

Надеюсь, это поможет.

...