【问题标题】:DragDrop event not raised未引发 DragDrop 事件
【发布时间】:2023-04-01 17:07:02
【问题描述】:

这是一个愚蠢的问题...我正在尝试将图片框拖放到面板上。我遵循了一些示例,但它不起作用。面板的 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。另外,当我拖动图片框时,光标变成了一个带圆圈的圆圈,就像这是一个不允许的操作。有没有办法让光标变成图片框中的图像?我不希望图片框移动,只是向面板添加一个项目。

【问题讨论】:

    标签: drag-and-drop raiseevent


    【解决方案1】:

    这个问题很容易解决。

    你必须在 DragEnter 中设置适当的 Effect:

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

    在正确触发 DragDrop 事件之后。

    【讨论】:

    • 是的,这是正确的解决方案。就像我在三年前的评论中提到的那样,我使用了 DragDropEffects.Move,而不是 .All,这在我的特定情况下也适用。
    【解决方案2】:

    Richard,问题在于拖放操作并不像您在这里编写的那样简单。在这里,您还没有开始应该以代码开头的拖动运动,您可以在此处阅读更多信息...http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dodragdrop(v=VS.90).aspx

    如果你只是想移动图片框...dragging picturebox inside winform on runtime

    最后是Drag and Drop between Instances of the same Windows Forms Application

    希望这会有所帮助。

    【讨论】:

    • 经过几次试验后,我解决了拖放事件未引发的问题。其余的工作得很好。我只需要将它添加到拖放事件即可工作。私人无效canvasPanel_DragEnter(对象发送者,DragEventArgs e){e.Effect = DragDropEffects.Move;; }
    • 你是对的!我刚试了一下,看看你的意思。做得很好:-)
    猜你喜欢
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多