弹出菜单错误

时间:2012-02-04 11:37:45

标签: vb.net

当用户在列表视图上按下鼠标右键时,我想弹出一个菜单。 这是我的代码:

    If e.Button = MouseButtons.Right Then
        Me.cnmnuLstCopy.Show(Me.cnmnuLstCopy, e.Location)
    End If 

我收到此错误:

  

System.Windows.Forms.dll中出现未处理的“System.StackOverflowException”类型异常

为什么会这样?

2 个答案:

答案 0 :(得分:0)

Have a look on this article

示例代码段:

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属性即可。不需要代码,它的工作方式与您期望的一样。