[英]How to get the location of ContextMenuStrip?
我在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);
使用回答來查詢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
是相對於控件的光標位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.