Recursively follow the Controls collection, looking at each items Location:
Control findLoc(ControlCollection controls, Point loc)
{
if (controls != null)
{
foreach (Control c in controls)
{
if (c.Location == loc)
{
return c;
}
Control f = findLoc(c.Controls, loc);
if (f != null) return f;
}
}
return null;
}
Do note that the Location property is relative to the container, not the screen - so you may need to alter the target
loc
to allow for that when you recurse into it's Controls collection.