2012-05-25 31 views
0

在写列表视图自定义控件:我重写此方法是这样的:HoverItem returing空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成为空:(当我落下项目在最右边变成空列表视图的区域...如果我把它放在列表中有项目和文本的地方,它可以正常工作,如果我将它放在某个项目没有文本的地方,那么它将变为空.... enter image description here

我附上一张图片以获得更多清晰度

是什么问题?或者你认为有更好的方法来做到这一点?

+0

是否有任何特定的原因,你为什么重写'OnDragDrop',而不是添加另一个事件处理程序? –

回答

1

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

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

+0

是啊我正在寻找一种方式,使它返回的项目,即使它是在白色区域,也我只需要一些看起来像一个列表框的项目(每个项目在一行) – Bohn

+0

你试过'详细信息'和'FullRowSelect'? – Tergiver

+0

工作过!...我从之前的详细信息...但我认为FullRowSelect做了伎俩...谢谢 – Bohn