ContextMenuStrip不显示附近的光标

时间:2013-03-09 17:28:57

标签: vb.net winforms contextmenu

当我右键单击datgridview中的一行时,我正在尝试创建一个显示上下文菜单的事件。

以下是正在发生的问题的图片:

enter image description here

以下是我目前正在使用的代码:

Private Sub dgvStudents_CellMouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles dgvStudents.CellMouseDown
    Dim rowClicked As DataGridView.HitTestInfo = dgvStudents.HitTest(e.X, e.Y)
    'Select Right Clicked Row if its not the header row
    If e.Button = Windows.Forms.MouseButtons.Right AndAlso e.RowIndex > -1 Then
        'Clear any currently sellected rows
        dgvStudents.ClearSelection()
        Me.dgvStudents.Rows(e.RowIndex).Selected = True
        ContextMenuStrip1.Show(dgvStudents, Control.MousePosition)

    End If
End Sub

P.S屏幕截图未显示我的光标>。>但它绝对不会与上下文菜单同步!

编辑:好的我已经解决了,

我只是将Control.MousePosition替换为MousePosition,它确实有用!

2 个答案:

答案 0 :(得分:6)

这些都不适合我。让菜单弹出鼠标的解决方案是:

ContextMenuStrip1.Show(MousePosition.X, MousePosition.Y)

答案 1 :(得分:4)

Mouse.Position位于屏幕坐标中。您需要提供相对于dgvStudents的相对坐标。他们通过事件论证在银盘上交给你:

  ContextMenuStrip1.Show(dgvStudents, e.Location)

通常会显示上下文菜单以响应鼠标操作,因此请改为使用CellMouseUp事件。