GetChildAtPoint
是 Windows 窗体应用程序(Windows Forms)中的一个方法,属于 Control
类,用于获取指定坐标点下的子控件。
当使用 GetChildAtPoint
方法时,它似乎只返回被禁用的控件,而忽略了启用的控件。
GetChildAtPoint
方法有一个重载版本,其第二个参数是 GetChildAtPointSkip
枚举,默认值为 GetChildAtPointSkip.Disabled
,这意味着默认情况下会跳过禁用的控件。// 跳过无可见或禁用的控件
Control child = parentControl.GetChildAtPoint(point, GetChildAtPointSkip.None);
// 递归检查所有子控件
private Control GetChildAtPointIncludingDisabled(Control parent, Point pt)
{
Control child = parent.GetChildAtPoint(pt, GetChildAtPointSkip.None);
if (child != null)
{
Control deeperChild = GetChildAtPointIncludingDisabled(child,
new Point(pt.X - child.Left, pt.Y - child.Top));
if (deeperChild != null)
return deeperChild;
}
return child;
}
// 确保使用正确的坐标系统
Point clientPoint = parentControl.PointToClient(Cursor.Position);
Control child = parentControl.GetChildAtPoint(clientPoint);
Visible
属性为 true
Enabled
属性状态Bounds
是否包含测试点GetChildAtPoint
常用于:
null
Label
)默认不接受鼠标输入,可能被跳过通过正确理解和使用 GetChildAtPoint
方法及其参数,可以准确获取指定点下的控件,无论其启用状态如何。
没有搜到相关的文章