Если вы просто хотите узнать, какой элемент управления находится перед родительской коллекцией, просто сделайте следующее:
private bool IsControlAtFront(Control control)
{
return control.Parent.Controls.GetChildIndex(control) == 0;
}
Обратите внимание, что Z-Index 0 является самым верхним элементом управления, чем выше число, тем ниже по иерархии.
Кроме того, этот код выше в настоящее время будет работать только для элемента управления в пределах отдельного родителя. Также необходимо будет рекурсивно проверить, что родитель также имеет нулевой индекс 0.
Это будет работать для любого элемента управления в любом месте формы:
private bool IsControlAtFront(Control control)
{
while (control.Parent != null)
{
if (control.Parent.Controls.GetChildIndex(control) == 0)
{
control = control.Parent;
if (control.Parent == null)
{
return true;
}
}
else
{
return false;
}
}
return false;
}