这是一个愚蠢的问题...我正在尝试将图片框拖到面板上。我遵循了一些榜样,但这无效。面板的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

如果您只想移动图片框... 在运行时拖动图像框

最后 在同一Windows表单应用程序的实例之间拖动

希望这可以帮助。

其他提示

问题很容易解决。

您必须仅设置拖曳剂适当的效果:

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

在正确触发DragDrop事件之后。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top