在我的 vb.net 应用程序中,我有一个包含一堆电子邮件地址的列表框。
列表框中有一个上下文菜单,其中包含查看联系人、修改和删除选项。
我目前被困在如何确定用户在上下文菜单操作中右键单击了 listbox1.items 中的哪个项目......所以说例如用户右键单击“[email protected]”并单击删除然后我需要说
listbox1.items.remove(THEITEMTHATWASRIGHTCLICKED)
但是,我如何确定 THEITEMTHATWASRIGHTCLICKED?
我试过了...
itemthatwasrightclicked = listbox1.SelectedIndex
但是如果我在左键单击之前右键单击一个项目,我会得到-1 的返回索引。如果我先左键单击该项目以选择它,然后右键单击我会返回正确的索引,因此似乎如果用户在没有先左键单击的情况下单击鼠标右键,则不会选择该项目。
我不知所措,任何帮助表示赞赏!
我觉得这应该是一些简单的事情。
提前致谢!:)
列表框类在 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] 删除。
我来说两句