如果没有过度复杂的简单问题,我会尝试在鼠标悬停在图像的某个区域上时让标签颜色发生变化。我的代码应该解释一下情况:
private void picboxMain_MouseHover(object sender, MouseEventArgs e)
{
int x1 = e.X;
int y1 = e.Y;
if ((x1 >= 155 && x1 <= 179) && (y1 >= 145 && y1 <= 160))
{
lblX.ForeColor = Color.Green;
lblY.ForeColor = Color.Green;
}
}
但是它不接受获取鼠标位置并分配给x1和y1变量的e.X和e.Y参数。为什么不允许这样的变量赋值?我已经成功地使用了以下几乎相同的功能,它可以完美地运行吗?
private void picboxMain_MouseUp(object sender, MouseEventArgs e)
{
int x1 = e.X;
int y1 = e.Y;
if ((x1 >= 155 && x1 <= 179) && (y1 >= 145 && y1 <= 160))
{
Form2 Form2 = new Form2();
Form2.Show();
}
}
为什么这样做而不是另一个?
答案 0 :(得分:5)
删除MouseHover
事件处理程序,它在第二个参数中不包含MouseEventArgs
,然后使用以下代码添加MouseMove
处理程序:
private void picboxMain_MouseMove(object sender, MouseEventArgs e)
{
int x1 = e.X;
int y1 = e.Y;
Color color = (x1 >= 155 && x1 <= 179) && (y1 >= 145 && y1 <= 160) ? Color.Green : Color.Black;
lblX.ForeColor = color;
lblY.ForeColor = color;
}
编辑:还应处理MouseLeave
。