0

在为 listview 编写自定义控件期间:我正在重写此方法,如下所示:

protected override void OnDragDrop(DragEventArgs drgevent)
{
    base.OnDragDrop(drgevent);

    // get the currently hovered row that the items will be dragged to
    Point clientPoint = base.PointToClient(new Point(drgevent.X, drgevent.Y));
    ListViewItem hoverItem = base.GetItemAt(clientPoint.X, clientPoint.Y);

有时 hoverItem 变为 null :( 当我将项目放在列表视图的最右侧区域时,它变为 null ...如果我将它放在列表中的某个位置,那里有项目和文本,它可以正常工作,如果我放下它在某个项目没有文本的地方,然后它变为空...... 在此处输入图像描述

为了更清楚,我附上一张图片

问题是什么?还是您认为有更好的方法可以做到这一点?

4

1 回答 1

1

没有问题。这是设计使然。没有红点所在的项目。ListView 具有不同的视图模式(视图属性),其中可以有图标/文本“块”包围每个项目,或者可以有多个项目列。

我认为将 View 属性设置为 View.Details 并将 FullRowSelect 设置为 true,GetItemAt 将在每一行的末尾点击空格,但我必须尝试确定。

于 2012-05-25T18:42:30.473 回答