拖放listview C#

Zi *_*ing 0 c# directory drag-and-drop file winforms

您好,当我双击列表视图时,如何启用拖动事件处理程序?

这是双击列表视图后得到的结果

private void listView1(object sender, EventArgs e)
Run Code Online (Sandbox Code Playgroud)

但是,我希望它是

private void listView(object sender,DragEventArgs e)
Run Code Online (Sandbox Code Playgroud)

我该怎么做..?

我尝试了很多方法,例如:

  private void Form_Load(object sender, EventArgs e)
  {
      // Enable drag and drop for this form
      // (this can also be applied to any controls)
      this.AllowDrop = true;

      // Add event handlers for the drag & drop functionality
      this.DragEnter += new DragEventHandler(Form_DragEnter);
      this.DragDrop += new DragEventHandler(Form_DragDrop);
 }
Run Code Online (Sandbox Code Playgroud)

Jac*_*ble 6

您需要实现DragEnter事件并设置DragEventArgs的Effect属性.该dragEnter事件事件是什么让事情被投进控制.之后,释放鼠标按钮时将触发DragDrop事件.

这是一个允许将对象放入ListView的版本:

    private void Form1_Load(object sender, EventArgs e)
    {
        listView1.AllowDrop = true;
        listView1.DragDrop += new DragEventHandler(listView1_DragDrop);
        listView1.DragEnter += new DragEventHandler(listView1_DragEnter);
    }

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

    void listView1_DragDrop(object sender, DragEventArgs e)
    {
        listView1.Items.Add(e.Data.ToString());
    }
Run Code Online (Sandbox Code Playgroud)

毫无疑问,您的示例代码取自:http://msdn.microsoft.com/en-us/library/system.windows.forms.control.allowdrop(v = vs.71).aspx