答案 0 :(得分:0)
我在ContextMenuStrip中添加了ContextMenuStrip_Opening事件。在那里我可以保存菜单弹出位置。
我做了类似的事情:
menuPopupLocation = chart.PointToClient(System.Windows.Forms.Cursor.Position);
然后我可以使用:
double dataX = chart.ChartAreas[0].AxisX.PixelPositionToValue(menuPopupLocation.X);
double dataY = chart.ChartAreas[0].AxisX.PixelPositionToValue(menuPopupLocation.Y);
答案 1 :(得分:0)
使用回答查询ContextMenuStrip的Opening事件中的当前鼠标光标位置可能会在打开条带时延迟一点,从而导致错误的位置。
如果需要真正单击的位置,请从控件的属性中删除ContextMenuStrip,然后在控件的MouseDown事件中手动打开上下文菜单。在那里,您可以访问实际的点击位置。
private void panel1_MouseDown(object sender, MouseEventArgs e)
{
if(e.Button == MouseButtons.Right)
{
var relativeClickedPosition = e.Location;
var screenClickedPosition = (sender as Control).PointToScreen(relativeClickedPosition);
contextMenuStrip1.Show(screenClickedPosition);
}
}
relativeClickedPosition
是相对于控件的光标位置。