"Z-Index" в winforms - PullRequest
       50

"Z-Index" в winforms

11 голосов
/ 15 апреля 2010

В CSS у нас есть свойство, называемое z-index, что такое же в Winfrom для элемента управления Panel для "Z-Index?

1 Ответ

15 голосов
/ 15 апреля 2010

WinForms имеет z-порядок, но вы не можете получить к нему доступ в виде числа. Вместо этого каждый элемент управления имеет метод BringToFront и метод SendToBack, которые перемещают элемент управления в верхнюю часть z-порядка или в нижнюю часть соответственно.

Не знаю точно, почему это было раскрыто таким образом, хотя вы редко сталкиваетесь с ситуациями, когда BringToFront или SendToBack не предоставляют то, что вам нужно.

Обновление: Я ошибаюсь, вы можете получить доступ к z-порядку напрямую с помощью метода в коллекции Controls контейнера элемента управления. Вот простой метод, который оборачивает это:

public void SetControlZOrder(Control ctrl, int z)
{
    ctrl.Parent.Controls.SetChildIndex(ctrl, z);
}

Я предполагаю, что они инкапсулировали это в BringToFront и SendToBack, чтобы все было просто и удобно. Я аплодирую.

Обновление 2: Я интерпретировал ваши комментарии к другому ответу здесь, чтобы означать, что вы хотите иметь возможность взять элемент управления, который находится внутри панели и больше, чем панель (так что эта часть скрыто) и сделайте так, чтобы элемент управления находился перед панелью и был больше его (чтобы вы видели весь элемент управления).

Это можно сделать, удалив элемент управления с панели, сместив его положение на исходную позицию панели и добавив его к элементам управления формы:

panel1.Controls.Remove(button1);
button1.Left += panel1.Left;
button1.Top += panel1.Top; 
this.Controls.Add(button1);

Сдвиги влево и вверх необходимы, потому что позиция кнопки изначально была относительно панели, а теперь будет относительно формы. Сдвиги удерживают его в исходном виртуальном положении, поэтому он, кажется, выходит из панели.

Затем вам нужно будет положить его обратно на панель, что является противоположностью приведенного выше кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...