private void listView1_ItemDrag(object sender, ItemDragEventArgs e)
        {
            listView1.DoDragDrop(e.Item,DragDropEffects.Move);
        }        private void listView1_DragEnter(object sender, DragEventArgs e)
        {
            e.Effect=e.AllowedEffect;
        }        private void listView1_DragOver(object sender, DragEventArgs e)
        {
            //Point p=listView1.PointToClient(new Point(e.X,e.Y));            //int targetIndex=listView1.InsertionMark.NearestIndex(p);
            //MessageBox.Show(targetIndex.ToString());
            //if (targetIndex > -1)
            //{
            //    Rectangle ItemBouds = listView1.GetItemRect(targetIndex);
            //    if (p.X > ItemBouds.Left+(ItemBouds.Width/2))
            //    {
            //        listView1.InsertionMark.AppearsAfterItem = true;
            //    }
            //    else
            //    {
            //        listView1.InsertionMark.AppearsAfterItem = false;
            //    }
            //}
        }        private void listView1_DragDrop(object sender, DragEventArgs e)
        {               
            int DRIndex=listView1.InsertionMark.Index;
            MessageBox.Show(DRIndex.ToString());
            if(DRIndex==-1)
            {
                return;
            }            if(listView1.InsertionMark.AppearsAfterItem)
            {
                DRIndex++;
            }            ListViewItem dragItem = (ListViewItem)e.Data.GetData(typeof(ListViewItem));
            listView1.Items.Insert(DRIndex,(ListViewItem)dragItem.Clone());
            listView1.Items.Remove(dragItem);
        }为什么吗 每次拖动的数据都到了第一条记录 而不是我拖到的位置 

解决方案 »

  1.   

               Point point = listView1.PointToClient(Cursor.Position);
               int DRIndex = listView1.GetItemAt(point.X, point.Y).Index; 
      

  2.   

    Point point = listView1.PointToClient(Cursor.Position);
               int DRIndex = listView1.GetItemAt(point.X, point.Y).Index; 
      

  3.   


     private void lvwOriginal_ItemDrag(object sender, System.Windows.Forms.ItemDragEventArgs e)
    {
    if(this.lvwOriginal.SelectedItems.Count>0)
    {

    this.lvwOriginal.DoDragDrop(s.ToString(),DragDropEffects.All|DragDropEffects.Move);
    }
    else 
    {
    return;
    }

    }