【发布时间】:2012-08-26 22:31:59
【问题描述】:
我有一个只包含两个东西的表单,一个 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;
}
(我尝试从 e.X 中减去标签的宽度,从 e.Y 中减去标签的高度,但这似乎不起作用。)
谢谢,
一月
【问题讨论】:
-
如果点击标签,PictureBox 的 Click 事件不会触发。
-
啊,诀窍就在这里!我实际上在运行时隐藏了标签。我只是使用标签的边界来知道鼠标点击的位置。我在这里真正追求的是类似于 HTML 图像映射的东西,我正在使用隐藏标签的位置来检查鼠标单击的位置。
标签: c# location label mouseevent