ListBox.IndexFromPoint 方法

定义

返回指定坐标处的项的从零开始的索引。

重载

IndexFromPoint(Point)

返回指定坐标处的项的从零开始的索引。

IndexFromPoint(Int32, Int32)

返回指定坐标处的项的从零开始的索引。

IndexFromPoint(Point)

Source:
ListBox.cs
Source:
ListBox.cs
Source:
ListBox.cs

返回指定坐标处的项的从零开始的索引。

C#
public int IndexFromPoint(System.Drawing.Point p);

参数

p
Point

Point 对象,包含用于获取项索引的坐标。

返回

在指定坐标处找到的项的从零开始的索引;如果找不到匹配项,则返回 ListBox.NoMatches

示例

下面的代码示例演示如何使用 ListBox 包含要放置到 RichTextBox 控件中的项的 控件执行拖放操作。 窗体的构造函数将 AllowDrop 属性设置为 true ,以便在 中 RichTextBox执行拖放操作。 该示例使用 MouseDownListBox 事件通过调用 DoDragDrop 方法启动拖动操作。 该示例使用 DragEnter 事件来确定被拖入 的 RichTextBox 项是否为有效的数据类型。 DragDrop事件执行拖动的项到实际放RichTextBox控件中的当前光标位置在RichTextBox。 此示例要求 DragDropDragEnter 事件已连接到示例中定义的事件处理程序。

C#
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();
}

注解

使用此方法可以确定哪个项位于控件中的特定位置。 可以使用此方法确定当用户右键单击 ListBox时选择列表中的哪个项。 可以确定光标的位置并将其传递给 p 方法的 IndexFromPoint 参数,以确定用户右键单击了哪个项。 然后,可以向用户显示快捷菜单,以基于特定项提供任务和功能。

适用于

.NET Framework 4.8.1 和其他版本
产品 版本
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

IndexFromPoint(Int32, Int32)

Source:
ListBox.cs
Source:
ListBox.cs
Source:
ListBox.cs

返回指定坐标处的项的从零开始的索引。

C#
public int IndexFromPoint(int x, int y);

参数

x
Int32

要搜索的位置的 x 坐标。

y
Int32

要搜索的位置的 y 坐标。

返回

在指定坐标处找到的项的从零开始的索引;如果找不到匹配项,则返回 ListBox.NoMatches

示例

下面的代码示例演示如何使用 ListBox 包含要放置到 RichTextBox 控件中的项的 控件执行拖放操作。 窗体的构造函数将 AllowDrop 属性设置为 true ,以便在 中 RichTextBox执行拖放操作。 该示例使用 MouseDownListBox 事件通过调用 DoDragDrop 方法启动拖动操作。 该示例使用 DragEnter 事件来确定被拖入 的 RichTextBox 项是否为有效的数据类型。 DragDrop事件执行拖动的项到实际放RichTextBox控件中的当前光标位置在RichTextBox。 此示例要求 DragDropDragEnter 事件已连接到示例中定义的事件处理程序。

C#
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();
}

注解

此方法使你能够确定位于控件内特定位置的项。 可以使用此方法确定当用户右键单击 ListBox时选择列表中的哪个项。 可以确定光标的位置,并将其传递给xy的参数IndexFromPoint方法,以确定哪一项用户通过右键单击鼠标。 然后,可以向用户显示快捷菜单,以基于特定项提供任务和功能。

适用于

.NET Framework 4.8.1 和其他版本
产品 版本
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10