ListBox.IndexFromPoint Metodo

Definizione

Restituisce l'indice in base zero dell'elemento in corrispondenza delle coordinate specificate.

Overload

IndexFromPoint(Point)

Restituisce l'indice in base zero dell'elemento in corrispondenza delle coordinate specificate.

IndexFromPoint(Int32, Int32)

Restituisce l'indice in base zero dell'elemento in corrispondenza delle coordinate specificate.

IndexFromPoint(Point)

Restituisce l'indice in base zero dell'elemento in corrispondenza delle coordinate specificate.

public:
 int IndexFromPoint(System::Drawing::Point p);
public int IndexFromPoint (System.Drawing.Point p);
member this.IndexFromPoint : System.Drawing.Point -> int
Public Function IndexFromPoint (p As Point) As Integer

Parametri

p
Point

Oggetto Point che contiene le coordinate utilizzate per ottenere l'indice dell'elemento.

Restituisce

L'indice in base zero dell'elemento trovato alle coordinate specificate; restituisce ListBox.NoMatches se non viene trovata alcuna corrispondenza.

Esempio

Nell'esempio di codice seguente viene illustrato come eseguire operazioni di trascinamento della selezione usando un ListBox controllo che contiene elementi da rilasciare in un RichTextBox controllo . Il costruttore del modulo imposta la AllowDrop proprietà su per true abilitare le operazioni di trascinamento della selezione in RichTextBox. Nell'esempio viene utilizzato l'evento MouseDown di ListBox per avviare l'operazione di trascinamento chiamando il DoDragDrop metodo . Nell'esempio viene utilizzato l'evento DragEnter per determinare se un elemento trascinato in RichTextBox è un tipo di dati valido. L'evento DragDrop esegue l'eliminazione effettiva di un elemento trascinato nel RichTextBox controllo nella posizione corrente del cursore all'interno di RichTextBox. In questo esempio è necessario che gli DragDrop eventi e DragEnter siano stati connessi ai gestori eventi definiti nell'esempio.

public:
   Form1()
   {
      InitializeComponent();
      
      // Sets the control to allow drops, and then adds the necessary event handlers.
      this->richTextBox1->AllowDrop = true;
   }

private:
   void listBox1_MouseDown( Object^ sender, System::Windows::Forms::MouseEventArgs^ e )
   {
      // Determines which item was selected.
      ListBox^ lb = (dynamic_cast<ListBox^>(sender));
      Point pt = Point(e->X,e->Y);

      //Retrieve the item at the specified location within the ListBox.
      int index = lb->IndexFromPoint( pt );

      // Starts a drag-and-drop operation.
      if ( index >= 0 )
      {
         // Retrieve the selected item text to drag into the RichTextBox.
         lb->DoDragDrop( lb->Items[ index ]->ToString(), DragDropEffects::Copy );
      }
   }

   void richTextBox1_DragEnter( Object^ /*sender*/, DragEventArgs^ e )
   {
      // If the data is text, copy the data to the RichTextBox control.
      if ( e->Data->GetDataPresent( "Text" ) )
            e->Effect = DragDropEffects::Copy;
   }

   void richTextBox1_DragDrop( Object^ /*sender*/, DragEventArgs^ e )
   {
      // Paste the text into the RichTextBox where at selection location.
      richTextBox1->SelectedText = e->Data->GetData( "System.String", true )->ToString();
   }
public Form1()
{
   InitializeComponent();
   // Sets the control to allow drops, and then adds the necessary event handlers.
   this.richTextBox1.AllowDrop = true;
}
 
private void listBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
   // Determines which item was selected.
   ListBox lb =( (ListBox)sender);
   Point pt = new Point(e.X,e.Y);
   //Retrieve the item at the specified location within the ListBox.
   int index = lb.IndexFromPoint(pt);

   // Starts a drag-and-drop operation.
   if(index>=0) 
   {
      // Retrieve the selected item text to drag into the RichTextBox.
      lb.DoDragDrop(lb.Items[index].ToString(), DragDropEffects.Copy);
   }
}

private void richTextBox1_DragEnter(object sender, DragEventArgs e)
{
   // If the data is text, copy the data to the RichTextBox control.
   if(e.Data.GetDataPresent("Text"))
      e.Effect = DragDropEffects.Copy;
}

private void richTextBox1_DragDrop(object sender, DragEventArgs e) 
{
   // Paste the text into the RichTextBox where at selection location.
   richTextBox1.SelectedText =  e.Data.GetData("System.String", true).ToString();
}
Public Sub New()
   MyBase.New()

   'This call is required by the Windows Form Designer.
   InitializeComponent()

   richTextBox1.AllowDrop = True

End Sub

Private Sub listBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles listBox1.MouseDown
   ' Determines which item was selected.
   Dim lb As ListBox = CType(sender, ListBox)
   Dim pt As New Point(e.X, e.Y)
   'Retrieve the item at the specified location within the ListBox.
   Dim index As Integer = lb.IndexFromPoint(pt)

   ' Starts a drag-and-drop operation.
   If index >= 0 Then
      ' Retrieve the selected item text to drag into the RichTextBox.
      lb.DoDragDrop(lb.Items(index).ToString(), DragDropEffects.Copy)
   End If
End Sub


Private Sub richTextBox1_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles richTextBox1.DragEnter
   ' If the data is text, copy the data to the RichTextBox control.
   If e.Data.GetDataPresent("Text") Then
      e.Effect = DragDropEffects.Copy
   End If
End Sub

Private Sub richTextBox1_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles richTextBox1.DragDrop
   ' Paste the text into the RichTextBox where at selection location.
   richTextBox1.SelectedText = e.Data.GetData("System.String", True).ToString()
End Sub

Commenti

Questo metodo consente di determinare quale elemento si trova in una posizione specifica all'interno del controllo. È possibile utilizzare questo metodo per determinare quale elemento all'interno dell'elenco è selezionato quando un utente fa clic con il pulsante destro del mouse su ListBox. La posizione del cursore può essere determinata e passata al p parametro del IndexFromPoint metodo per determinare l'elemento su cui l'utente ha fatto clic con il pulsante destro del mouse. È quindi possibile visualizzare un menu di scelta rapida all'utente per fornire attività e funzionalità in base all'elemento specifico.

Si applica a

IndexFromPoint(Int32, Int32)

Restituisce l'indice in base zero dell'elemento in corrispondenza delle coordinate specificate.

public:
 int IndexFromPoint(int x, int y);
public int IndexFromPoint (int x, int y);
member this.IndexFromPoint : int * int -> int
Public Function IndexFromPoint (x As Integer, y As Integer) As Integer

Parametri

x
Int32

Coordinata x della posizione da cercare.

y
Int32

Coordinata y della posizione da cercare.

Restituisce

L'indice in base zero dell'elemento trovato alle coordinate specificate; restituisce ListBox.NoMatches se non viene trovata alcuna corrispondenza.

Esempio

Nell'esempio di codice seguente viene illustrato come eseguire operazioni di trascinamento della selezione usando un ListBox controllo che contiene elementi da rilasciare in un RichTextBox controllo . Il costruttore del modulo imposta la AllowDrop proprietà su per true abilitare le operazioni di trascinamento della selezione in RichTextBox. Nell'esempio viene utilizzato l'evento MouseDown di ListBox per avviare l'operazione di trascinamento chiamando il DoDragDrop metodo . Nell'esempio viene utilizzato l'evento DragEnter per determinare se un elemento trascinato in RichTextBox è un tipo di dati valido. L'evento DragDrop esegue l'eliminazione effettiva di un elemento trascinato nel RichTextBox controllo nella posizione corrente del cursore all'interno di RichTextBox. In questo esempio è necessario che gli DragDrop eventi e DragEnter siano stati connessi ai gestori eventi definiti nell'esempio.

public:
   Form1()
   {
      InitializeComponent();
      
      // Sets the control to allow drops, and then adds the necessary event handlers.
      this->richTextBox1->AllowDrop = true;
   }

private:
   void listBox1_MouseDown( Object^ sender, System::Windows::Forms::MouseEventArgs^ e )
   {
      // Determines which item was selected.
      ListBox^ lb = (dynamic_cast<ListBox^>(sender));
      Point pt = Point(e->X,e->Y);

      //Retrieve the item at the specified location within the ListBox.
      int index = lb->IndexFromPoint( pt );

      // Starts a drag-and-drop operation.
      if ( index >= 0 )
      {
         // Retrieve the selected item text to drag into the RichTextBox.
         lb->DoDragDrop( lb->Items[ index ]->ToString(), DragDropEffects::Copy );
      }
   }

   void richTextBox1_DragEnter( Object^ /*sender*/, DragEventArgs^ e )
   {
      // If the data is text, copy the data to the RichTextBox control.
      if ( e->Data->GetDataPresent( "Text" ) )
            e->Effect = DragDropEffects::Copy;
   }

   void richTextBox1_DragDrop( Object^ /*sender*/, DragEventArgs^ e )
   {
      // Paste the text into the RichTextBox where at selection location.
      richTextBox1->SelectedText = e->Data->GetData( "System.String", true )->ToString();
   }
public Form1()
{
   InitializeComponent();
   // Sets the control to allow drops, and then adds the necessary event handlers.
   this.richTextBox1.AllowDrop = true;
}
 
private void listBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
   // Determines which item was selected.
   ListBox lb =( (ListBox)sender);
   Point pt = new Point(e.X,e.Y);
   //Retrieve the item at the specified location within the ListBox.
   int index = lb.IndexFromPoint(pt);

   // Starts a drag-and-drop operation.
   if(index>=0) 
   {
      // Retrieve the selected item text to drag into the RichTextBox.
      lb.DoDragDrop(lb.Items[index].ToString(), DragDropEffects.Copy);
   }
}

private void richTextBox1_DragEnter(object sender, DragEventArgs e)
{
   // If the data is text, copy the data to the RichTextBox control.
   if(e.Data.GetDataPresent("Text"))
      e.Effect = DragDropEffects.Copy;
}

private void richTextBox1_DragDrop(object sender, DragEventArgs e) 
{
   // Paste the text into the RichTextBox where at selection location.
   richTextBox1.SelectedText =  e.Data.GetData("System.String", true).ToString();
}
Public Sub New()
   MyBase.New()

   'This call is required by the Windows Form Designer.
   InitializeComponent()

   richTextBox1.AllowDrop = True

End Sub

Private Sub listBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles listBox1.MouseDown
   ' Determines which item was selected.
   Dim lb As ListBox = CType(sender, ListBox)
   Dim pt As New Point(e.X, e.Y)
   'Retrieve the item at the specified location within the ListBox.
   Dim index As Integer = lb.IndexFromPoint(pt)

   ' Starts a drag-and-drop operation.
   If index >= 0 Then
      ' Retrieve the selected item text to drag into the RichTextBox.
      lb.DoDragDrop(lb.Items(index).ToString(), DragDropEffects.Copy)
   End If
End Sub


Private Sub richTextBox1_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles richTextBox1.DragEnter
   ' If the data is text, copy the data to the RichTextBox control.
   If e.Data.GetDataPresent("Text") Then
      e.Effect = DragDropEffects.Copy
   End If
End Sub

Private Sub richTextBox1_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles richTextBox1.DragDrop
   ' Paste the text into the RichTextBox where at selection location.
   richTextBox1.SelectedText = e.Data.GetData("System.String", True).ToString()
End Sub

Commenti

Questo metodo consente di determinare l'elemento che si trova in una posizione specifica all'interno del controllo. È possibile utilizzare questo metodo per determinare quale elemento all'interno dell'elenco è selezionato quando un utente fa clic con il pulsante destro del mouse su ListBox. La posizione del cursore può essere determinata e passata al x e y i parametri del IndexFromPoint metodo per determinare quale elemento viene selezionata il puntatore del mouse su. È quindi possibile visualizzare un menu di scelta rapida all'utente per fornire attività e funzionalità in base all'elemento specifico.

Si applica a