как определить положение полосы контекстного меню при щелчке мыши
как определить положение полосы контекстного меню при щелчке мыши
Kenneth Haugland
Есть ли эта проблема в windows forms или WPF?
Есть ли эта проблема в windows forms или WPF?
Это должно сработать...
Me.ContextMenuStrip1.Bounds.Location
Private Sub Form1_MouseDoubleClick(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDoubleClick Me.ContextMenuStrip1.Show(MousePosition) End Sub Private Sub TestToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles TestToolStripMenuItem.Click MessageBox.Show(Me.ContextMenuStrip1.Bounds.Location.X & "x" & Me.ContextMenuStrip1.Bounds.Location.Y & _ vbCrLf & MousePosition.X & "x" & MousePosition.Y)
Private Sub DataGridView1_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseDown If e.Button = Windows.Forms.MouseButtons.Right Then ContextMenuStrip1.Show(CType(sender, Control), e.Location) End If End Sub
Обычно он отображается относительно конкретного элемента управления - это просто случай смещения его (если вы хотите) на величину из верхнего левого угла соответствующего элемента управления путем его ручного построения и использования метода Show: MSDN имеет пример: http://msdn.microsoft.com/en-us/library/s00cc2f3.aspx[^]
В Практическое руководство
Private Sub YourDataGrid_CellMouseDown(sender As Object, e As DataGridViewCellMouseEventArgs) Handles YourDataGrid.CellMouseDown If e.Button = Windows.Forms.MouseButtons.Right AndAlso e.RowIndex >= 0 Then YourDataGrid.Rows(e.RowIndex).Selected = True 'if possible insert code here to read selected option from context menu and get relevant content from respective cell YourContextMenu.Show(MousePosition.X, MousePosition.Y) End If End Sub
На этот вопрос был дан ответ более 4 лет назад