这是一个愚蠢的问题......我正在尝试将图片框拖放到面板上。我遵循了一些例子,但它不起作用。从不引发面板的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被引发。此外,当我拖动图片框时,光标变成一个禁止的圆圈,就像是一个不允许的操作。有没有办法让光标成为图片框中的图像?我不希望图片框移动,只是为了向面板添加项目。
答案 0 :(得分:5)
问题很容易解决。
您必须在DragEnter中设置相应的效果:
private void Form1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.All;
}
在正确触发DragDrop事件之后。
答案 1 :(得分:0)
理查德,问题是拖放并不像你在这里编写的那样简单。在这里你还没有开始应该从代码开始的拖动动作,你可以在这里阅读更多关于它... http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dodragdrop(v=VS.90).aspx
如果您只想移动PictureBox ... dragging picturebox inside winform on runtime
最后Drag and Drop between Instances of the same Windows Forms Application
希望这有帮助。