Подтвердить что ты не робот

Как установить Z-порядок управления с помощью WinForms

Я пишу пользовательский TextBox, который при получении фокуса меняет свой стиль границы.

Как добавление границы заставляет элемент управления перекрываться с соседними с ним, я временно привожу текстовое поле в начало диалога (используя textBox.BringToFront()).

Однако, как только редактирование завершено и фокус потерян, я хотел бы отправить элемент управления обратно в исходное положение в Z-порядке.

Возможно ли это (желательно простым способом!)

4b9b3361

Ответ 2

Нет никакого Z-порядка, как в VB, но вы можете использовать GetChildIndex и SetChildIndex, чтобы получить и установить их индексы вручную.

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

Что-то вроде этого, вероятно, то, что вам нужно:

// Get the controls index
int zIndex = parentControl.Controls.GetChildIndex(textBox);
// Bring it to the front
textBox.BringToFront();
// Do something...
// Then send it back again
parentControl.Controls.SetChildIndex(textBox, zIndex);