Как проверить, находится ли userControl перед другими в C #? - PullRequest
6 голосов
/ 21 июля 2010

Как проверить, находится ли пользовательский элемент управления перед другими?Есть ли простой способ сделать это?Я использую метод takeToFront, когда мой пользовательский элемент управления был нажат, но теперь мне нужно определить, находится ли он в данный момент впереди.

1 Ответ

8 голосов
/ 21 июля 2010

Если вы просто хотите узнать, какой элемент управления находится перед родительской коллекцией, просто сделайте следующее:

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...