【发布时间】:2015-11-18 10:25:13
【问题描述】:
我认为我的标题几乎说明了我的问题。但让我们再深入一点。
我的问题是:-
每当我的鼠标悬停在指定的坐标和区域上时,我都有这个带有 X、Y、宽度和高度的矩形列表。我希望将光标更改为手或其他东西。但是我的代码似乎对前面的矩形区域不起作用,但它对列表中的最后一个矩形区域有效。有什么解决方法可以引导我
void MouseChanger(MouseEventArgs e)
{
RectangleF[] allRectangles = new RectangleF[aListDrawings.Count];
aListDrawings.CopyTo(allRectangles);
if (allRectangles.Length == 0)
return;
RectangleF currentSelected = RectangleF.Empty;
foreach (RectangleF rec in allRectangles)
{
float Xm = e.X;
float Ym = e.Y;
RectangleF current = GetOffsetRectangle(rec);
if (((Xm >= current.X) && (Xm <= (current.X + current.Width))) && ((Ym >= current.Y) && (Ym <= (current.Y + current.Width))))
{
this.Cursor = Cursors.Hand;
}
else
{
this.Cursor = Cursors.Default;
}
}
}
正如您在参数上看到的,MouseEventArgs 将在 MouseMove 事件期间提供给此方法。非常感谢
【问题讨论】:
-
你的目标是什么:Winforms? WPF? ASP? ...?? 总是相应地标记您的问题!另请查看
Rectangle.Contains- 实际错误在 else 子句中。删除它并在 if; 中设置一个标志;在循环之后检查这个..! -
我在 if 子句上使用了 break。非常感谢@TaW。光标位置的另一件事似乎在我的区域之外发生了变化。你觉得这个 if 子句有什么问题吗? if (((Xm >= current.X) && (Xm = current.Y) && (Ym
-
Break 也是一个不错的选择。 - (Ym