2012-05-25 64 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