Событие DragDrop не возникло
Это глупый вопрос... Я пытаюсь перетащить картинку на панель. Я следовал за некоторыми примерами, но это не работает. Событие 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 ответа
Ричард, проблема в том, что перетаскивание - не такая простая операция, как вы здесь написали. Здесь вы не начали движение перетаскивания, которое должно начинаться с кода, и вы можете узнать больше об этом здесь... http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dodragdrop(v=VS.90).aspx
Если вы просто хотите переместить PictureBox... перетаскивая picturebox внутри winform во время выполнения
И, наконец, перетаскивание между экземплярами одного приложения Windows Forms.
Надеюсь это поможет.
Проблема легко решается.
Вы должны просто установить в DragEnter соответствующий эффект:
private void Form1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.All;
}
После этого событие DragDrop срабатывает корректно.