检索右键单击列表框中的项目以进行上下文菜单操作 - vb.net

约翰

在我的 vb.net 应用程序中,我有一个包含一堆电子邮件地址的列表框。

列表框中有一个上下文菜单,其中包含查看联系人、修改和删除选项。

我目前被困在如何确定用户在上下文菜单操作中右键单击了 listbox1.items 中的哪个项目......所以说例如用户右键单击“[email protected]”并单击删除然后我需要说

   listbox1.items.remove(THEITEMTHATWASRIGHTCLICKED)

但是,我如何确定 THEITEMTHATWASRIGHTCLICKED?

我试过了...

 itemthatwasrightclicked = listbox1.SelectedIndex

但是如果我在左键单击之前右键单击一个项目,我会得到-1 的返回索引。如果我先左键单击该项目以选择它,然后右键单击我会返回正确的索引,因此似乎如果用户在没有先左键单击的情况下单击鼠标右键,则不会选择该项目。

我不知所措,任何帮助表示赞赏!

我觉得这应该是一些简单的事情。

提前致谢!:)

R.麦克米兰

列表框类在 MSDN 中为此提供了一种方法。您将需要使用 IndexFromPoint(Point) 方法。调用此方法时,它返回列表框中在指定点的坐标处找到的项目的索引。您将希望通过在 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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章