帅哥可以去这里看看!!
http://expert.csdn.net/Expert/topic/2173/2173632.xml?temp=.4354669

解决方案 »

  1.   

    see:ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/vbcon/html/vbtskstartingdragoperations.htm
      

  2.   

    例子:
    通过处理一系列事件,最著名的有 DragEnter、DragLeave 和 DragDrop 事件,来在 Windows 应用程序内完成拖放操作。通过使用这些事件的事件参数中的可用信息,可以轻松地简化拖放操作。拖动数据
    所有拖放操作都从拖动开始。当拖动开始时,在 DoDragDrop 方法中实现使数据得以收集的功能。在下面的示例中,使用 MouseDown 事件启动拖动操作,因为该事件最直观(大部分拖放操作都从按下鼠标按钮开始)。但是,请记住,任何事件都可用于启动拖放过程。注意   某些控件具有自定义的、特定于拖动的事件。例如,ListView 和 TreeView 控件有 ItemDrag 事件。
    启动拖动操作 在由其中开始拖动的控件的 MouseDown 事件中,使用 DoDragDrop 方法设置要拖动的数据,并设置拖动将具有的允许效果。有关更多信息,请参见 DataEventArgs.Data 属性和 DataEventArgs.AllowedEffect 属性。 
    下面的示例显示如何启动拖动操作。拖动开始于的控件是 Button 控件,要拖动的数据是表示 Button 控件的 Text 属性的字符串,允许的效果是复制或移动。 private void button1_MouseDown(object sender, 
    System.Windows.Forms.MouseEventArgs e)
    {
       button1.DoDragDrop(button1.Text, DragDropEffects.Copy | 
          DragDropEffects.Move);
    }
    注意   请注意,任何数据都可用作 DoDragDrop 方法中的参数;在上面的示例中,使用 Button 控件的 Text 属性(而不是对值进行硬编码或从数据集检索数据),因为该属性与(从 Button 控件)开始拖动的位置相关。当将拖放操作合并到 Windows 应用程序中时,请牢记这一点。
    拖动操作生效后,可以处理 QueryContinueDrag 事件,该事件“要求系统权限”以继续该拖动操作。当处理此方法时,此时也适于调用将对该拖动操作产生效果的方法,如当光标悬停在 TreeView 控件中的 TreeNode 上时,展开它。放置数据
    开始从 Windows 窗体或控件上的某个位置拖动数据后,将很自然地要将其放置在某处。当光标经过为放置数据而进行了正确配置的窗体或控件区域时,会发生改变。可以通过设置 AllowDrop 属性以及处理 DragEnter 和 DragDrop 事件,使 Windows 窗体或控件内的任何区域接受放置的数据。执行放置 在“属性”窗口中,将 AllowDrop 属性设置为 true。 
    右击解决方案资源管理器中的窗体,并选择“查看代码”。 
    在将要发生放置操作的控件的 DragEnter 事件中,使用 If 语句进行类型检查,确保被拖动数据的类型是可以接受的(在这种情况下为 Text)。代码随后将发生放置操作时将发生的结果设置为 DragDropEffects 枚举中的值。有关更多信息,请参见 DragEventArgs.Effect 属性。 private void textBox1_DragEnter(object sender, 
    System.Windows.Forms.DragEventArgs e)
    {
       if (e.Data.GetDataPresent(DataFormats.Text)) 
          e.Effect = DragDropEffects.Copy;
       else
          e.Effect = DragDropEffects.None;
    }
    注意   请注意,您也可以定义您自己的 DataFormats。这与将您自己的对象指定为 SetData 方法的 Object 参数一样简单。在进行该操作时,请确保指定的对象可序列化。有关更多信息,请参见 ISerializable 接口。
    在将要发生放置操作的控件的 DragDrop 事件中,使用 GetData 方法检索正在被拖动的数据。有关更多信息,请参见 DataObject.Data 属性。 
    在下面的示例中,TextBox 控件是要拖动到的控件(发生放置操作的位置)。代码将 TextBox 控件的 Text 属性设置为等于要拖动的数据。 
    private void textBox1_DragDrop(object sender, 
    System.Windows.Forms.DragEventArgs e)
    {
       textBox1.Text = e.Data.GetData(DataFormats.Text).ToString();
    }
    注意   另外,还可使用 KeyState 属性,以便根据拖放操作过程中按下的键,出现相应的效果(例如,当按下 CTRL 键时复制拖动的数据是标准操作)。
      

  3.   

    see:
    ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/vbcon/html/vbcondragdropclipboardsupport.htm
      

  4.   

    我不是要从一个listview拖到另一个listview中,或者是从treeview拖到listview中,而是从windows系统中的文件夹中拖一个文件到listview中
      

  5.   

    关注,这个过去在VB中叫OLE拖放,在.NET中去哪了,没找到。