Aracılığıyla paylaş


ListViewInsertionMark.AppearsAfterItem Özellik

Tanım

Ekleme işaretinin, özelliği tarafından Index belirtilen dizinle öğenin sağ tarafında görünüp görünmediğini belirten bir değer alır veya ayarlar.

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

Özellik Değeri

true ekleme işareti özelliği tarafından Index belirtilen dizinle öğenin sağ tarafında görünüyorsa; aksi takdirde , false. Varsayılan değer: false.

Örnekler

Aşağıdaki kod örneği ekleme işareti özelliğinin ListView nasıl kullanılacağını gösterir ve standart sürükleme olaylarını kullanarak öğeyi sürükleyip bırakma yeniden sıralamasını uygular. Ekleme işaretinin konumu olay işleyicisinde Control.DragOver güncelleştirilir. Bu işleyicide, fare işaretçisinin konumu en yakın öğenin orta noktasıyla karşılaştırılır ve ekleme işaretinin öğenin solunda mı yoksa sağında mı görüneceğini belirlemek için sonuç kullanılır.

Tam örnek için genel bakış başvuru konusuna ListViewInsertionMark bakın.

// 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

Açıklamalar

NearestIndex yöntemi, fare işaretçisine en yakın öğeyi bulmanıza olanak tanır, ancak ekleme işaretinin bu öğeden önce mi yoksa sonra mı görüneceğini belirlemek için kendi hesaplamalarınızı yapmanız gerekir.

Özelliği için gereken değeri hesaplamak için AppearsAfterItem şu adımları izleyin:

  1. NearestIndex Fare işaretçisine en yakın öğenin dizinini almak için yöntemini kullanın.

  2. Öğenin sınırlayıcı dikdörtgenini ListView.GetItemRect almak için dizin değerini yöntemine geçirin.

  3. Fare işaretçisi sınırlayıcı dikdörtgenin orta noktasının solunda yer alıyorsa, özelliğini olarak ayarlayınAppearsAfterItem; aksi takdirde olarak ayarlayıntrue.false

Daha fazla bilgi için genel bakış başvuru konusuna ListViewInsertionMark bakın.

Şunlara uygulanır

Ayrıca bkz.