ListViewInsertionMark.Index Eigenschap

Definitie

Hiermee haalt u de index op van het item waaraan de invoegmarkering wordt weergegeven of stelt u deze in.

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

Waarde van eigenschap

De index van het item waaraan de invoegmarkering wordt weergegeven of -1 wanneer de invoegmarkering verborgen is.

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u de ListView functie voor het invoegen van markeringen gebruikt en het opnieuw ordenen van items met slepen en neerzetten implementeert met behulp van de standaardsleepgebeurtenissen. De positie van de invoegmarkering wordt bijgewerkt in een handler voor de Control.DragOver gebeurtenis. In deze handler wordt de positie van de muisaanwijzer vergeleken met het middelpunt van het dichtstbijzijnde item en wordt het resultaat gebruikt om te bepalen of de invoegmarkering links of rechts van het item wordt weergegeven.

Zie het overzichtsonderwerp voor het ListViewInsertionMark volledige voorbeeld.

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

Opmerkingen

De invoegmarkering wordt links van het item weergegeven met de opgegeven index als de AppearsAfterItem eigenschap is ingesteld op false; anders wordt deze rechts van het item weergegeven. De invoegmarkering verdwijnt automatisch wanneer een gesleept item in de ListView.Items verzameling wordt ingevoegd. Als u de invoegmarkering handmatig wilt verwijderen, bijvoorbeeld wanneer een item naar zichzelf wordt gesleept of buiten het besturingselement wordt gesleept, stelt u de Index waarde in op -1.

Gebruik de NearestIndex methode om de index van het item op te halen dat het dichtst bij een opgegeven locatie ligt, zoals de locatie van de muisaanwijzer bij het plaatsen van een item in een slepen-en-neerzetten-bewerking.

Van toepassing op

Zie ook