根据X Y坐标更改Mouseover上的标签颜色

时间:2014-02-26 18:15:53

标签: c# winforms coordinates

如果没有过度复杂的简单问题,我会尝试在鼠标悬停在图像的某个区域上时让标签颜色发生变化。我的代码应该解释一下情况:

    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();
        }
    }

为什么这样做而不是另一个?

1 个答案:

答案 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