当用户在列表视图上按下鼠标右键时,我想弹出一个菜单。 这是我的代码:
If e.Button = MouseButtons.Right Then
Me.cnmnuLstCopy.Show(Me.cnmnuLstCopy, e.Location)
End If
我收到此错误:
System.Windows.Forms.dll中出现未处理的“System.StackOverflowException”类型异常
为什么会这样?
答案 0 :(得分:0)
示例代码段:
Private Sub listView1_MouseUp(Byval Sender as Object, _
Byval e As System.Windows.Forms.MouseEventArgs) _
Handles listView1.MouseUp
'Checking the Mouse right Button
If e.Button = MouseButtons.Right Then
ContextHandler(listView1,e)
listView1.ContextMenu.Show(listView1, New Point(e.X,e.Y))
End if
End sub
Private Sub TextBox1_MouseUp(Byval Sender as Object, _
Byval e As System.Windows.Forms.MouseEventArgs) _
Handles TextBox1.MouseUp
'Checking the Mouse right Button
If e.Button = MouseButtons.Right Then
ContextHandler(TextBox1,e)
TextBox1.ContextMenu.Show(TextBox1, New Point(e.X,e.Y))
End if
End sub
答案 1 :(得分:0)
这种情况正在发生,因为该代码试图在菜单上显示菜单,而不是列表视图。正确的代码是
Me.ContextMenuStrip1.Show(ListView1, e.Location)
实际上你可以弹出一个没有任何代码的上下文菜单。只需在表单中添加上下文菜单条,然后在列表视图中设置ContextMenuStrip属性即可。不需要代码,它的工作方式与您期望的一样。