gpt4 book ai didi

c# - 出现上下文菜单时如何获取鼠标位置?

转载 作者:太空狗 更新时间:2023-10-29 21:15:28 25 4
gpt4 key购买 nike

我有一个包含许多图片框的面板。每个图片框都将“contextRightMenu”注册为其上下文菜单。

弹出上下文菜单时我想要的是获取当前的鼠标位置。

我曾尝试通过使用 mouseDown 和单击来获取鼠标位置,但这些事件发生在单击上下文菜单中的一项之后,但为时已晚。

上下文菜单的弹出事件不传递鼠标事件参数,所以我不知道如何获取鼠标位置。

如果我可以获得鼠标事件参数,那就很容易了。

那么我就可以:

 this.contextRightClick.Popup += new System.EventHandler(this.contextRightClick_Popup);

// If EventArgs include mouseposition within the sender
private void contextRightClick_Popup)(object sender, EventArgs e)
{
int iLocationX = sender.Location.X;
int iLocationY = sender.Location.Y;

Point pPosition = new Point(iLocationX + e.X, iLocationY + e.Y); // Location + position within the sender = current mouseposition
}

任何人都可以帮我获得一些鼠标事件参数,或者建议一个将在上下文菜单弹出窗口之前运行的事件吗?

提前致谢

最佳答案

您希望光标位置是相对于被右键单击的 PictureBox 还是相对于父面板、父窗口或可能只是屏幕位置?

以下内容可能有助于作为起点。在这里,我获取整个屏幕上的当前鼠标坐标,然后使用 contextRightMenu 中的 SourceControl,它是对右键单击的控件实例的引用,我们将屏幕坐标转换为相对于源控件的点。

void contextRightMenu_Popup(object sender, EventArgs e)
{
ContextMenu menu = sender as ContextMenu;

if (menu != null)
{
// Get cursor position in screen coordinates
Point screenPoint = Cursor.Position;

// Convert screen coordinates to a point relative to the control
// that was right clicked, in your case this would be the relavant
// picture box.
Point pictureBoxPoint = menu.SourceControl.PointToClient(screenPoint);
}
}

关于c# - 出现上下文菜单时如何获取鼠标位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2651515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com