簡體   English   中英

如何獲取ContextMenuStrip的位置?

[英]How to get the location of ContextMenuStrip?

我已將ContextMenuStrip附加到Chart控件。

如何顯示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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM