c#Drag&;下拉列表视图

c#Drag&;下拉列表视图,c#,listview,drag-and-drop,C#,Listview,Drag And Drop,我有一个列表框,我正从中拖入列表视图。 现在我在ListView中有了组,所以当ListView中的项目被放置在listviewgroup点时,它必须将其添加到该组下 这是处理丢弃的代码 private void lstvPositions_DragDrop(object sender, DragEventArgs e) { var group = lstvPositions.GetItemAt(e.X, e.Y); var item = e.D

我有一个列表框,我正从中拖入列表视图。 现在我在ListView中有了组,所以当ListView中的项目被放置在listviewgroup点时,它必须将其添加到该组下

这是处理丢弃的代码

    private void lstvPositions_DragDrop(object sender, DragEventArgs e)
    {

        var group = lstvPositions.GetItemAt(e.X, e.Y);
        var item = e.Data.GetData(DataFormats.Text).ToString();
        lstvPositions.Items.Add(new ListViewItem {Group = group.Group, Text = item});

    }
我没有找到一个函数可以给groupitem,所以我使用了GetItemAt,我也可以从它访问listviewgroup

但是GetItemAt总是返回null


我做错什么了吗?有没有更好的方法来实现这一点?

首先,我假设您使用的是ListView,而不是ListBox,因为ListBox不包含GetItemAt成员

要解决问题,请将点转换为局部坐标:

private void lstvPositions_DragDrop(object sender, DragEventArgs e)
{
   var localPoint = lstvPositions.PointToClient(new Point(e.X, e.Y));
   var group = lstvPositions.GetItemAt(localPoint.X, localPoint.Y);
   var item = e.Data.GetData(DataFormats.Text).ToString();
   lstvPositions.Items.Add(new ListViewItem {Group = group.Group, Text = item});
}