1

我已经搜索过,但我找不到我的问题的答案。我有一个正在移动到 VirtualMode 的 ListView,但是当我尝试拖动操作时,它失败了。它找不到正确的插入索引,因为这些项目是虚拟的。在虚拟模式下如何正确拖动 ListView 项?

基本上问题是,无论鼠标在哪里, NearestIndex 都会返回 -1。此代码在移至虚拟模式之前有效。

int theTargetIdx = InsertionMark->NearestIndex( thePoint );

if ( theTargetIdx > -1 )
{
    System::Drawing::Rectangle theItemBounds = GetItemRect( theTargetIdx );
    if ( thePoint.Y > theItemBounds.Top + (theItemBounds.Height / 2) )
    {
        InsertionMark->AppearsAfterItem = true;
    }
    else
    {
        InsertionMark->AppearsAfterItem = false;
    }
}
else
{
    aArgs->Effect = System::Windows::Forms::DragDropEffects::None;  
}

InsertionMark->Index = theTargetIdx;
4

0 回答 0