当我右键单击datgridview中的一行时,我正在尝试创建一个显示上下文菜单的事件。
以下是正在发生的问题的图片:
以下是我目前正在使用的代码:
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,它确实有用!
答案 0 :(得分:6)
这些都不适合我。让菜单弹出鼠标的解决方案是:
ContextMenuStrip1.Show(MousePosition.X, MousePosition.Y)
答案 1 :(得分:4)
Mouse.Position位于屏幕坐标中。您需要提供相对于dgvStudents的相对坐标。他们通过事件论证在银盘上交给你:
ContextMenuStrip1.Show(dgvStudents, e.Location)
通常会显示上下文菜单以响应鼠标操作,因此请改为使用CellMouseUp事件。