【问题标题】:Drag and drop listview C#拖放列表视图 C#
【发布时间】:2011-10-31 20:52:10
【问题描述】:

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

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

private void listView1(object sender, EventArgs e)

但是,我希望它是

private void listView(object sender,DragEventArgs e)

我该怎么做..?

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

  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);
 }

【问题讨论】:

  • 请准确说明您想要从拖动到哪里以及到拖动到哪里。每个拖动操作都有一个起点和一个终点,实现取决于此。起点甚至可能是 Windows,因此我们需要更多信息。
  • 不要复制您的问题,而是编辑它,如果您没有得到回复:stackoverflow.com/questions/7142920/drag-and-drop-in-listview-c

标签: c# winforms file drag-and-drop directory


【解决方案1】:

您需要实现 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());
    }

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多