我有一个仅包含 2 个东西的 Form ,一个PictureBox和一个Label。
我在图片框中添加了一个鼠标单击事件处理程序。
this.pictureBox1.MouseClick += picture_MouseClick;
在处理程序内部,我需要检查鼠标单击的位置是否在标签的范围内。为此,我使用鼠标事件位置并检查该位置是否在标签范围内。
private void picture_MouseClick(object sender, MouseEventArgs e)
{
if (label1.Bounds.Contains(e.Location))
{
MessageBox.Show("FOUND YOU!");
}
}
我希望这会起作用,因为它看起来很容易,但是导致显示 MessageBox 的单击位置(图像中的橙色框)向下偏移并位于标签的右侧。
这是因为鼠标事件是相对于 PictureBox 而标签边界是相对于 Form 的吗?或相反亦然?
顺便说一句,您在图像中看到的标签在运行时是隐藏的。我只是将标签用作了解用户是否单击某个位置的“黑客”方式。
public Form1()
{
InitializeComponent();
this.label1.Visible = false;
this.pictureBox1.MouseClick += picture_MouseClick;
}
(我尝试从 eX 中减去标签的宽度,从 eY 中减去标签的高度,但这似乎不起作用。)
谢谢,
简