Bagikan melalui


ListViewInsertionMark.AppearsAfterItem Properti

Definisi

Mendapatkan atau mengatur nilai yang menunjukkan apakah tanda penyisipan muncul di sebelah kanan item dengan indeks yang ditentukan oleh Index properti .

public:
 property bool AppearsAfterItem { bool get(); void set(bool value); };
public bool AppearsAfterItem { get; set; }
member this.AppearsAfterItem : bool with get, set
Public Property AppearsAfterItem As Boolean

Nilai Properti

true jika tanda penyisipan muncul di sebelah kanan item dengan indeks yang ditentukan oleh Index properti; jika tidak, false. Default adalah false.

Contoh

Contoh kode berikut menunjukkan cara menggunakan ListView fitur tanda penyisipan dan mengimplementasikan penyusunan 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

Metode ini NearestIndex memungkinkan Anda menemukan item yang paling dekat dengan penunjuk mouse, tetapi Anda harus melakukan penghitungan Anda sendiri untuk menentukan apakah tanda penyisipan akan muncul sebelum atau sesudah item ini.

Untuk menghitung nilai yang diperlukan untuk AppearsAfterItem properti, ikuti langkah-langkah berikut:

  1. NearestIndex Gunakan metode untuk mengambil indeks item yang paling dekat dengan penunjuk mouse.

  2. Teruskan nilai indeks ke ListView.GetItemRect metode untuk mengambil persegi panjang pembatas item.

  3. Jika penunjuk mouse terletak di sebelah kiri titik tengah persegi panjang pembatas, atur AppearsAfterItem properti ke false; jika tidak, atur ke true.

Untuk informasi selengkapnya, lihat ListViewInsertionMark topik referensi gambaran umum.

Berlaku untuk

Lihat juga