c# - 将一个控件拖放到winform中的另一个控件

标签 c# winforms drag-and-drop

我正在做一些非常非常简单的事情。

我有一个列表框,其事件设置如下:

    public Form1()
    {
        InitializeComponent();
        this.listBox1.AllowDrop = true;
        this.listBox1.DragEnter += new DragEventHandler(listBox1_DragEnter);
        this.listBox1.DragDrop += new DragEventHandler(listBox1_DragDrop);
    }

    void listBox1_DragDrop(object sender, DragEventArgs e)
    {
       //code to add labelText to Items of ListBox
    }

    void listBox1_DragEnter(object sender, DragEventArgs e)
    {
        //set DragDropEffects;
    }

现在我有了一个标签,其代码如下:

    private void label1_MouseDown(object sender, MouseEventArgs e)
    {
        DoDragDrop((sender as Label).Text, DragDropEffects.Copy);
        //this.label1.DoDragDrop((sender as Label).Text, DragDropEffects.Copy);
        //used one of them at a time.

    }

但是没有任何反应。列表框 DragEnter 事件永远不会触发。事实上,阻力永远不会发生。 每当我尝试拖动标签(文本)时,不允许出现窗口光标,而不是 'DragDropEffects.Copy 的光标

拖放不发生..

当我修改列表框(和相关代码)以接受从任何其他窗口拖放到它上面的文件时,效果很好。

所以..我无法执行从保存在表单上的控件到保存在同一表单上的另一个控件的拖动。

我错过了什么吗?我正在运行 Windows XP。

我经历了this并通过this

请帮忙...

最佳答案

您的代码确实有效。 您只需在事件处理程序中设置正确的拖动效果。

void listBox1_DragDrop(object sender, DragEventArgs e)
{
  e.Effect = DragDropEffects.Copy;
}

void listBox1_DragEnter(object sender, DragEventArgs e)
{
  e.Effect = DragDropEffects.Copy;
}

关于c# - 将一个控件拖放到winform中的另一个控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11647286/

相关文章:

c# - 检查并行 foreach 循环的状态

c# - 如果数据属性的设置值不满足条件,则重定向到getter

c# - 使用 SMTP 发送电子邮件不适用于 asp.net

c# - 在 C# windows.Form 中使用的自定义 .ttf 字体

c++ - 迷你过滤器拦截拖放文件到磁盘?

c# - 使用 RazorEngine 插入要呈现为 HTML 的 html 填充模板

winforms - Devexpress PopupContainerEdit 弹出窗口始终打开

c# - CheckedBoxList SelectedItemChanged

delphi - 如何从 shell 中拖放文件?

java - 如何在drawable中获取图像的ID