Freigeben über


ListBox.IndexFromPoint Methode

Definition

Gibt den nullbasierten Index des Elements an den angegebenen Koordinaten zurück.

Überlädt

IndexFromPoint(Point)

Gibt den nullbasierten Index des Elements an den angegebenen Koordinaten zurück.

IndexFromPoint(Int32, Int32)

Gibt den nullbasierten Index des Elements an den angegebenen Koordinaten zurück.

IndexFromPoint(Point)

Gibt den nullbasierten Index des Elements an den angegebenen Koordinaten zurück.

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

Parameter

p
Point

Ein Point-Objekt, das die Koordinaten zum Abrufen des Elementindexes enthält.

Gibt zurück

Der nullbasierte Index des an den angegebenen Koordinaten gefundenen Elements. Wenn keine Übereinstimmung gefunden wurde, wird ListBox.NoMatches zurückgegeben.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie Drag-and-Drop-Vorgänge mithilfe eines ListBox Steuerelements ausgeführt werden, das Elemente enthält, die in ein RichTextBox Steuerelement einzufügen sind. Der Konstruktor des Formulars legt die AllowDrop -Eigenschaft auf fest, um true drag-and-drop-Vorgänge in der RichTextBoxzu aktivieren. Im Beispiel wird das MouseDown -Ereignis von ListBox verwendet, um den Ziehvorgang durch Aufrufen der DoDragDrop -Methode zu starten. Im Beispiel wird das DragEnter -Ereignis verwendet, um zu bestimmen, ob ein in das RichTextBox gezogene Element ein gültiger Datentyp ist. Das DragDrop -Ereignis führt das tatsächliche Ablegen eines gezogenen Elements in das RichTextBox Steuerelement an der aktuellen Cursorposition in der RichTextBoxaus. Dieses Beispiel erfordert, dass die DragDrop Ereignisse und DragEnter mit den im Beispiel definierten Ereignishandlern verbunden wurden.

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

Hinweise

Mit dieser Methode können Sie bestimmen, welches Element sich an einer bestimmten Position innerhalb des Steuerelements befindet. Mit dieser Methode können Sie bestimmen, welches Element in der Liste ausgewählt wird, wenn ein Benutzer mit der rechten Maustaste auf klickt ListBox. Die Position des Cursors kann bestimmt und an den p Parameter der IndexFromPoint -Methode übergeben werden, um zu bestimmen, auf welches Element der Benutzer mit der rechten Maustaste geklickt hat. Anschließend können Sie dem Benutzer ein Kontextmenü anzeigen, um Aufgaben und Features basierend auf dem jeweiligen Element bereitzustellen.

Gilt für:

IndexFromPoint(Int32, Int32)

Gibt den nullbasierten Index des Elements an den angegebenen Koordinaten zurück.

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

Parameter

x
Int32

Die x-Koordinate der zu suchenden Position.

y
Int32

Die y-Koordinate der zu suchenden Position.

Gibt zurück

Der nullbasierte Index des an den angegebenen Koordinaten gefundenen Elements. Wenn keine Übereinstimmung gefunden wurde, wird ListBox.NoMatches zurückgegeben.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie Drag-and-Drop-Vorgänge mithilfe eines ListBox Steuerelements ausgeführt werden, das Elemente enthält, die in ein RichTextBox Steuerelement einzufügen sind. Der Konstruktor des Formulars legt die AllowDrop -Eigenschaft auf fest, um true drag-and-drop-Vorgänge in der RichTextBoxzu aktivieren. Im Beispiel wird das MouseDown -Ereignis von ListBox verwendet, um den Ziehvorgang durch Aufrufen der DoDragDrop -Methode zu starten. Im Beispiel wird das DragEnter -Ereignis verwendet, um zu bestimmen, ob ein in das RichTextBox gezogene Element ein gültiger Datentyp ist. Das DragDrop -Ereignis führt das tatsächliche Ablegen eines gezogenen Elements in das RichTextBox Steuerelement an der aktuellen Cursorposition in der RichTextBoxaus. Dieses Beispiel erfordert, dass die DragDrop Ereignisse und DragEnter mit den im Beispiel definierten Ereignishandlern verbunden wurden.

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

Hinweise

Mit dieser Methode können Sie bestimmen, welches Element sich an einer bestimmten Position innerhalb des Steuerelements befindet. Mit dieser Methode können Sie bestimmen, welches Element in der Liste ausgewählt wird, wenn ein Benutzer mit der rechten Maustaste auf klickt ListBox. Die Position des Cursors kann bestimmt und an die x Parameter und y der IndexFromPoint -Methode übergeben werden, um zu bestimmen, auf welches Element der Benutzer mit der rechten Maustaste geklickt hat. Anschließend können Sie dem Benutzer ein Kontextmenü anzeigen, um Aufgaben und Features basierend auf dem jeweiligen Element bereitzustellen.

Gilt für: