ListViewInsertionMark.AppearsAfterItem Свойство

Определение

Получает или задает значение, указывающее, должен ли знак вставки быть отображен справа от элемента с индексом, определенным свойством Index.

public bool AppearsAfterItem { get; set; }

Значение свойства

Значение true, если знак вставки должен быть отображен справа от элемента с индексом, заданным свойством Index; в обратном случае – значение false. Значение по умолчанию — false.

Примеры

В следующем примере кода показано, как использовать ListView функцию метки вставки, и реализовано изменение порядка элементов перетаскивания с помощью стандартных событий перетаскивания. Позиция метки вставки обновляется в обработчике Control.DragOver события. В этом обработчике положение указателя мыши сравнивается с серединой ближайшего элемента, а результат используется для определения того, отображается ли метка вставки слева или справа от элемента.

Полный пример см. в обзорной справочной ListViewInsertionMark статье.

// Moves the insertion mark as the item is dragged.
private void myListView_DragOver(object sender, DragEventArgs e)
{
    // Retrieve the client coordinates of the mouse pointer.
    Point targetPoint = 
        myListView.PointToClient(new Point(e.X, e.Y));

    // Retrieve the index of the item closest to the mouse pointer.
    int targetIndex = myListView.InsertionMark.NearestIndex(targetPoint);

    // Confirm that the mouse pointer is not over the dragged item.
    if (targetIndex > -1) 
    {
        // Determine whether the mouse pointer is to the left or
        // the right of the midpoint of the closest item and set
        // the InsertionMark.AppearsAfterItem property accordingly.
        Rectangle itemBounds = myListView.GetItemRect(targetIndex);
        if ( targetPoint.X > itemBounds.Left + (itemBounds.Width / 2) )
        {
            myListView.InsertionMark.AppearsAfterItem = true;
        }
        else
        {
            myListView.InsertionMark.AppearsAfterItem = false;
        }
    }

    // Set the location of the insertion mark. If the mouse is
    // over the dragged item, the targetIndex value is -1 and
    // the insertion mark disappears.
    myListView.InsertionMark.Index = targetIndex;
}

Комментарии

Метод NearestIndex позволяет найти элемент, ближайший к указателю мыши, но необходимо выполнить собственные вычисления, чтобы определить, должна ли метка вставки отображаться до или после этого элемента.

Чтобы вычислить значение, необходимое AppearsAfterItem для свойства, выполните следующие действия.

  1. Используйте метод , NearestIndex чтобы получить индекс элемента, ближайшего к указателю мыши.

  2. Передайте значение индекса в ListView.GetItemRect метод , чтобы получить ограничивающий прямоугольник элемента.

  3. Если указатель мыши находится слева от средней точки ограничивающего прямоугольника, задайте AppearsAfterItem для свойства значение false; в противном случае задайте для него значение true.

Дополнительные сведения см. в обзорной справочной ListViewInsertionMark статье.

Применяется к

Өнім Нұсқалар
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

См. также раздел