在我的vb.net应用程序中,我有一个包含一堆电子邮件地址的列表框。
列表框上有一个上下文菜单,包含查看联系人、html" target="_blank">修改和删除选项。
我目前被困在如何确定用户在上下文菜单操作中右键单击listbox1.items中的哪个项目......例如,用户右键单击“johnsmith@stackoverflow.com”并单击删除,然后我需要说
listbox1.items.remove(THEITEMTHATWASRIGHTCLICKED)
但我如何确定点击正确?
我试过。。。
itemthatwasrightclicked = listbox1.SelectedIndex
但是如果我在左键单击之前右键单击一个项目,我会得到一个返回的索引-1。如果我先用鼠标左键单击该项目以将其选中,然后用鼠标右键单击,则返回了正确的索引,因此,如果用户在没有先用鼠标左键单击的情况下用鼠标右键单击,则该项目似乎不会被选中。
我不知所措,非常感谢您的帮助!
我觉得这应该很简单。
提前感谢!:)
listbox类在MSDN中为此提供了一个方法。您将希望使用IndexFromPoint(Point)方法。当调用此方法时,它将返回列表框中位于指定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
我在Visual Studio C#IDE中定义了一个ContextMenuStri上下文菜单,并对程序进行编码,以便当用户右键单击屏幕上的一个对象时,上下文菜单成功弹出。用户可以从上下文菜单中选择一个项目,代码成功确定用户选择了哪个上下文菜单项。到目前为止还不错。问题是上下文菜单接受右键单击作为选择上下文菜单项的机制。当我不小心双击右键单击屏幕上的一个对象时,我注意到了这一点...菜单在第一次单
我在上下文菜单中使用右键单击功能时遇到问题。我的菜单项没有显示,因为我的第二个ngFor=“let row”条件。。。但我需要右键单击选中的行对象,以便从该行传入json值。 现在模式正在弹出,但没有显示菜单项按钮,因此我无法使用click事件。 我做错了什么? view.component.html view.component.ts
问题内容: 这并不是说我要防止“查看源代码”或类似的愚蠢行为,而是要为某些元素制作一些自定义上下文菜单。 编辑:答案的答复:我已经尝试过: 问题答案: 捕获事件,然后在事件处理程序中返回false。 无论如何,您也可以在某些浏览器中捕获click事件并使用哪个鼠标按钮触发该事件。
问题内容: 我当前正在通过右键单击实例化并将其位置设置为鼠标位置的位置来创建右键单击上下文菜单。是否有更好的方法? 问题答案: 您可能正在手动调用菜单。这会导致菜单中出现一些令人讨厌的越野车行为。 该方法处理所有需要发生的事情(在鼠标悬停时突出显示事情,并在必要时关闭弹出窗口),其中使用只是显示菜单而无需添加任何其他行为。 要进行右键单击弹出菜单,只需创建一个。 然后,您所要做的就是向要弹出菜单的
我的自定义子类重写,以便在右键单击(ctrl单击)时显示上下文菜单。 我创建了一个带有适当目标/操作的菜单项,并将其添加到菜单中。 我想实例化一个子视图,并将其放置在最初发生右键单击的位置;然而,目前尚不清楚如何获取导致菜单显示的原始点击事件的位置。 action方法的参数获取NSMenuItem实例,但它似乎没有任何属性来确定其在屏幕上的位置(或其superview)。 如何确定初始右键单击事件
Since 9.9 popMenuClick 标题栏右边popMenu点击后触发的事件 使用方法 document.addEventListener('popMenuClick', function(e) { //得到name属性值 console.log(e.data.title); // 这里不是name,是title }, false); 代码演示 基本功能演示 <h1>请点击右上