Bagikan melalui


ListViewInsertionMark.Index Properti

Definisi

Mendapatkan atau mengatur indeks item di samping tempat tanda penyisipan muncul.

public:
 property int Index { int get(); void set(int value); };
public int Index { get; set; }
member this.Index : int with get, set
Public Property Index As Integer

Nilai Properti

Indeks item di samping tanda penyisipan muncul atau -1 saat tanda penyisipan disembunyikan.

Contoh

Contoh kode berikut menunjukkan cara menggunakan ListView fitur tanda penyisipan dan mengimplementasikan pengurutan ulang item seret dan letakkan menggunakan peristiwa seret standar. Posisi tanda penyisipan diperbarui dalam handler untuk peristiwa tersebut Control.DragOver . Dalam handler ini, posisi penunjuk mouse dibandingkan dengan titik tengah item terdekat, dan hasilnya digunakan untuk menentukan apakah tanda penyisipan muncul di sebelah kiri atau kanan item.

Untuk contoh lengkapnya, lihat ListViewInsertionMark topik referensi gambaran umum.

// Moves the insertion mark as the item is dragged.
void myListView_DragOver( Object^ /*sender*/, DragEventArgs^ e )
{
   // Retrieve the client coordinates of the mouse pointer.
   Point targetPoint = myListView->PointToClient( 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;
}
// 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;
}
' Moves the insertion mark as the item is dragged.
Private Sub myListView_DragOver(sender As Object, e As DragEventArgs)
    ' Retrieve the client coordinates of the mouse pointer.
    Dim targetPoint As Point = myListView.PointToClient(New Point(e.X, e.Y))
    
    ' Retrieve the index of the item closest to the mouse pointer.
    Dim targetIndex As Integer = _
        myListView.InsertionMark.NearestIndex(targetPoint)
    
    ' Confirm that the mouse pointer is not over the dragged item.
    If targetIndex > -1 Then
        ' 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.
        Dim itemBounds As Rectangle = myListView.GetItemRect(targetIndex)
        If targetPoint.X > itemBounds.Left + (itemBounds.Width / 2) Then
            myListView.InsertionMark.AppearsAfterItem = True
        Else
            myListView.InsertionMark.AppearsAfterItem = False
        End If
    End If
    
    ' 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
End Sub

Keterangan

Tanda penyisipan muncul di sebelah kiri item dengan indeks yang ditentukan jika AppearsAfterItem properti diatur ke false; jika tidak, itu muncul di sebelah kanan item. Tanda penyisipan menghilang secara otomatis saat item yang diseret disisipkan ke ListView.Items dalam koleksi. Untuk menghapus tanda penyisipan secara manual, misalnya, saat item diseret ke dirinya sendiri atau diseret di luar kontrol, atur nilai ke Index -1.

NearestIndex Gunakan metode untuk mengambil indeks item yang paling dekat dengan lokasi tertentu, seperti lokasi penunjuk mouse saat memposisikan item dalam operasi seret dan letakkan.

Berlaku untuk

Lihat juga