基于XY坐标更改MouseHover上的标签颜色

ajm*_*ajm 1 c# coordinates winforms

没有过于复杂的简单问题,我试图让标签颜色随着鼠标悬停在图像的某个区域上而改变.我的代码应该解释一下情况:

    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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是它不接受获取鼠标位置并分配给x1和y1变量的eX和eY参数.为什么不允许这样的变量赋值?我成功地使用了以下几乎完全相同的功能吗?

    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();
        }
    }
Run Code Online (Sandbox Code Playgroud)

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

Dmi*_*try 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;
}
Run Code Online (Sandbox Code Playgroud)

编辑:MouseLeave应该处理.