winforms 在C#中,仅当鼠标位于行的顶部或闭合路径的内部时才更改鼠标光标

ovfsdjhp  于 2022-11-16  发布在  C#
关注(0)|答案(1)|浏览(151)

我想设置事件属性或改变鼠标光标悬停在一行时,由图形类创建。
我可以为包含行面板设置此属性,但我希望只在鼠标位于行的顶部时更改鼠标光标。

euoag5mw

euoag5mw1#

假设您的行位于一个名为myPanel的面板中,那么您需要以下方法:

private void MyPanel_MouseMove(object sender, MouseEventArgs e)
{
    if (IsShapeContainingMouse(e.Location))
    {
        Cursor = System.Windows.Forms.Cursors.Hand;
    }
    else
    {
        Cursor = System.Windows.Forms.Cursors.Default;
    }
}

private bool IsShapeContainingMouse(Point location)
{
    Point shapeStartPosition = GetShapeStartPosition();
    Point shapeEndPosition = GetShapeEndPosition();
    return shapeStartPosition.X <= location.X && location.X <= shapeEndPosition.X && shapeStartPosition.Y <= location.Y && location.Y <= shapeEndPosition.Y;
 }
}

您需要实现GetShapeStartPosition()GetShapeStartPosition()两个方法来获取行的开始和结束。

相关问题