Compartir a través de


ListBox.IndexFromPoint Método

Definición

Devuelve el índice de base cero del elemento en las coordenadas especificadas.

Sobrecargas

IndexFromPoint(Point)

Devuelve el índice de base cero del elemento en las coordenadas especificadas.

IndexFromPoint(Int32, Int32)

Devuelve el índice de base cero del elemento en las coordenadas especificadas.

IndexFromPoint(Point)

Devuelve el índice de base cero del elemento en las coordenadas especificadas.

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

Parámetros

p
Point

Objeto Point que contiene las coordenadas que se utilizan para obtener el índice del elemento.

Devoluciones

Índice de base cero del elemento encontrado en las coordenadas especificadas; devuelve ListBox.NoMatches si no se encuentran coincidencias.

Ejemplos

En el ejemplo de código siguiente se muestra cómo realizar operaciones de arrastrar y colocar mediante un ListBox control que contiene elementos que se van a colocar en un RichTextBox control. El constructor del formulario establece la AllowDrop propiedad en true para habilitar las operaciones de arrastrar y colocar para que se produzcan en .RichTextBox En el ejemplo se usa el MouseDown evento de ListBox para iniciar la operación de arrastre llamando al DoDragDrop método . En el ejemplo se usa el DragEnter evento para determinar si un elemento al que se arrastra RichTextBox es un tipo de datos válido. El DragDrop evento realiza la colocación real de un elemento arrastrado en el RichTextBox control en la ubicación actual del cursor dentro de RichTextBox. En este ejemplo se requiere que los DragDrop eventos y DragEnter se hayan conectado a los controladores de eventos definidos en el ejemplo.

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

Comentarios

Este método permite determinar qué elemento se encuentra en una ubicación específica dentro del control. Puede usar este método para determinar qué elemento de la lista está seleccionado cuando un usuario hace clic con el botón derecho en .ListBox La ubicación del cursor se puede determinar y pasar al p parámetro del IndexFromPoint método para determinar qué elemento ha clic con el botón derecho del usuario sobre el mouse. A continuación, puede mostrar un menú contextual al usuario para proporcionar tareas y características basadas en el elemento específico.

Se aplica a

IndexFromPoint(Int32, Int32)

Devuelve el índice de base cero del elemento en las coordenadas especificadas.

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

Parámetros

x
Int32

Coordenada x de la ubicación que se va a buscar.

y
Int32

Coordenada y de la ubicación que se va a buscar.

Devoluciones

Índice de base cero del elemento encontrado en las coordenadas especificadas; devuelve ListBox.NoMatches si no se encuentran coincidencias.

Ejemplos

En el ejemplo de código siguiente se muestra cómo realizar operaciones de arrastrar y colocar mediante un ListBox control que contiene elementos que se van a colocar en un RichTextBox control. El constructor del formulario establece la AllowDrop propiedad en true para habilitar las operaciones de arrastrar y colocar para que se produzcan en .RichTextBox En el ejemplo se usa el MouseDown evento de ListBox para iniciar la operación de arrastre llamando al DoDragDrop método . En el ejemplo se usa el DragEnter evento para determinar si un elemento al que se arrastra RichTextBox es un tipo de datos válido. El DragDrop evento realiza la colocación real de un elemento arrastrado en el RichTextBox control en la ubicación actual del cursor dentro de RichTextBox. En este ejemplo se requiere que los DragDrop eventos y DragEnter se hayan conectado a los controladores de eventos definidos en el ejemplo.

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

Comentarios

Este método permite determinar qué elemento se encuentra en una ubicación específica dentro del control. Puede usar este método para determinar qué elemento de la lista está seleccionado cuando un usuario hace clic con el botón derecho en .ListBox La ubicación del cursor se puede determinar y pasar a los x parámetros y y del IndexFromPoint método para determinar qué elemento ha clic con el botón derecho del usuario sobre el mouse. A continuación, puede mostrar un menú contextual al usuario para proporcionar tareas y características basadas en el elemento específico.

Se aplica a