检索在上下文菜单操作的列表框中右键单击的项目 - vb.net
Retrieving the item right-clicked in a listbox for a context menu action - vb.net
在我的 vb.net 应用程序中,我有一个包含一堆电子邮件地址的列表框。
列表框中有一个上下文菜单,其中包含查看联系人、修改和删除选项。
我目前卡在如何确定 listbox1.items 中用户右键单击了哪个项目以用于上下文菜单操作....所以说例如用户右键单击 'johnsmith@whosebug.com' 然后点击删除 我需要说
listbox1.items.remove(THEITEMTHATWASRIGHTCLICKED)
但是我如何确定 THEITEMTHATWASRIGHTCLICKED?
我试过了...
itemthatwasrightclicked = listbox1.SelectedIndex
但是如果我在左键单击之前右键单击一个项目,我得到的返回索引为 -1。如果我先左键单击该项目 select 然后右键单击,我会返回正确的索引,因此如果用户在没有先左键单击的情况下右击,则该项目不会 selected因此。
我很茫然,如有任何帮助,我们将不胜感激!
我觉得这应该是简单的东西。
提前致谢! :)
列表框 class 在 MSDN 中为此提供了一种方法。您将需要使用 IndexFromPoint(Point) 方法。当调用此方法时,它 returns 在指定点的坐标处找到的列表框中项目的索引。您将希望通过在 ListBox 的 MouseDown 事件中实现它来捕获右键单击事件的坐标。
在最基本的形式中,代码如下。
Private Sub ListBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown
If e.Button = MouseButtons.Right Then
ListBox1.SelectedIndex = ListBox1.IndexFromPoint(e.X, e.Y)
End If
End Sub
在我的 vb.net 应用程序中,我有一个包含一堆电子邮件地址的列表框。
列表框中有一个上下文菜单,其中包含查看联系人、修改和删除选项。
我目前卡在如何确定 listbox1.items 中用户右键单击了哪个项目以用于上下文菜单操作....所以说例如用户右键单击 'johnsmith@whosebug.com' 然后点击删除 我需要说
listbox1.items.remove(THEITEMTHATWASRIGHTCLICKED)
但是我如何确定 THEITEMTHATWASRIGHTCLICKED?
我试过了...
itemthatwasrightclicked = listbox1.SelectedIndex
但是如果我在左键单击之前右键单击一个项目,我得到的返回索引为 -1。如果我先左键单击该项目 select 然后右键单击,我会返回正确的索引,因此如果用户在没有先左键单击的情况下右击,则该项目不会 selected因此。
我很茫然,如有任何帮助,我们将不胜感激!
我觉得这应该是简单的东西。
提前致谢! :)
列表框 class 在 MSDN 中为此提供了一种方法。您将需要使用 IndexFromPoint(Point) 方法。当调用此方法时,它 returns 在指定点的坐标处找到的列表框中项目的索引。您将希望通过在 ListBox 的 MouseDown 事件中实现它来捕获右键单击事件的坐标。
在最基本的形式中,代码如下。
Private Sub ListBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown
If e.Button = MouseButtons.Right Then
ListBox1.SelectedIndex = ListBox1.IndexFromPoint(e.X, e.Y)
End If
End Sub