Элемент управления ListView не может перетаскивать в виртуальном режиме

Я искал и не могу найти ответ на свой вопрос. У меня есть ListView, который перемещается в VirtualMode, но когда я пытаюсь выполнить операцию перетаскивания, происходит сбой. Не удается найти правильный индекс вставки, потому что элементы являются виртуальными. Как правильно выполнить перетаскивание элемента 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;

0 ответов

Другие вопросы по тегам