题
这是一个愚蠢的问题...我正在尝试将图片框拖到面板上。我遵循了一些榜样,但这无效。面板的Dragdrop事件永远不会提出。我搜索了Thi网站的解决方案,并发现了一年以上的两个主题,但他们的解决方案无效。我创建了一个新项目,只有此代码:
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);
}
}
我还将面板的允许唱片和表单设置为true。牵引力和穆多尔(Mousedown)被抬起。另外,当我拖动图片框时,光标会变成被禁止的圆圈,就像不允许的操作一样。是否有一种方法使光标成为图片框中的图像?我不希望Picturebox移动,只是将项目添加到面板中。
解决方案
理查德(Richard),问题在于,拖放不像您在此处编码那样简单。在这里,您尚未启动应该从代码开始的拖放运动,您可以在此处阅读更多有关它的信息... http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dodragdrop(V=VS.90).aspx
如果您只想移动图片框... 在运行时拖动图像框
希望这可以帮助。
其他提示
问题很容易解决。
您必须仅设置拖曳剂适当的效果:
private void Form1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.All;
}
在正确触发DragDrop事件之后。
不隶属于 StackOverflow