WINDOWS窗体下
左边是个TreeView,显示的是大学开课目录
右边是个DataGrid,显示的是所有学生信息列表
现要作个拖放功能,把学生分别拖放到开课班级中去(类似windows系统的资源管理器)
一个学生允许属于多个课程班级急啊,哪位大哥给段例子啊

解决方案 »

  1.   

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclassdodragdroptopic.asp
      

  2.   

    private void dataGrid5_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
    {
    int rown=this.dataGrid9.CurrentCell.RowNumber;

    DataRow dr=((DataTable)e.Data.GetData(typeof(System.Data.DataTable))).Rows[rown];//((DataTable)(dataGrid9.DataSource)).Rows[rown];
    vc=new VSGWSClass.VSGWSClass();
    vc.PO=this.cboPO.Text;
    DataTable dt=(DataTable)(dataGrid5.DataSource);
    dt.Rows.Add(vc.ChangeDatarow(dr));
    this.dataGrid5.DataSource=dt;
    } private void dataGrid9_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    dataGrid9.DoDragDrop(dataGrid9.DataSource,DragDropEffects.Copy);
    } private void dataGrid5_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
    {
    e.Effect=DragDropEffects.Copy;
    }
      

  3.   

    shuaizhen(object Net)  : vc 怎么定义啊
      

  4.   

    演示了在两个 ListBox 控件间的拖放操作。当拖动动作启动时,该示例调用 DoDragDrop 方法。在 MouseDown 事件期间,如果从鼠标位置起鼠标移动的距离大于 SystemInformation.DragSize,则启动拖动动作。IndexFromPoint 方法用于在 MouseDown 事件期间确定要拖动的项的索引。[Visual Basic, C#, C++] 该示例同时演示了对拖放操作使用自定义光标。该示例假定应用程序目录中存在两个光标文件:3dwarro.cur 和 3dwno.cur,分别用于自定义拖动和无放置光标。如果选中 UseCustomCursorsCheck CheckBox,则使用自定义光标。自定义光标在 GiveFeedback 事件处理程序中设置。[Visual Basic, C#, C++] 键盘状态在右 ListBox 的 DragOver 事件处理程序中计算,以确定基于 SHIFT、CTRL、ALT 或 CTRL+ALT 键的状态将发生哪种拖动操作。放置动作在 ListBox 中发生的位置也在 DragOver 事件期间确定。如果要放置的数据不是一个 String,则 DragEventArgs.Effect 将被设置为 DragDropEffects.None。最后,放置的状态在 DropLocationLabel Label 中显示。[Visual Basic, C#, C++] 要放置的用于右 ListBox 的数据在 DragDrop 事件处理程序中确定,并且在 ListBox 中的适当位置添加该 String 值。如果拖动操作移动到窗体边框的外面,则 QueryContinueDrag 事件处理程序中将取消拖放操作。
      

  5.   

    using System;
    using System.Drawing;
    using System.Windows.Forms;namespace Snip_DragNDrop
    {
        public class Form1 : System.Windows.Forms.Form
        {
            private System.Windows.Forms.ListBox ListDragSource;
            private System.Windows.Forms.ListBox ListDragTarget;
            private System.Windows.Forms.CheckBox UseCustomCursorsCheck;
            private System.Windows.Forms.Label DropLocationLabel;        private int indexOfItemUnderMouseToDrag;
            private int indexOfItemUnderMouseToDrop;        
            
            private Rectangle dragBoxFromMouseDown;
            private Point screenOffset;        private Cursor MyNoDropCursor;
            private Cursor MyNormalCursor;        /// The main entry point for the application.
            [STAThread]
            static void Main() 
            {
                Application.Run(new Form1());
            }