Сделайте так, чтобы элемент управления WinForm отображался поверх всех остальных элементов управления.

У меня есть WinFrom, в котором я прячу все границы и блок управления. Внутри WinForm у меня есть RECT() (не элемент управления WinFrom), RECT заполняет всю WinForm.

Я пытаюсь добавить метку в WinForm, но хочу, чтобы метка отображалась поверх RECT. Метка появляется в WinForm, но никогда не появляется поверх RECT. Я пробовал использовать следующее:

/*App Runs - Label does not show up*/
_label.Text = "This is the label";
_label.BackColor = Color.Cornsilk;
_form.Controls.Add(_label);
_form.Controls.SetChildIndex(_label, 0);

/*App Does Not Run*/
_label.Text = "This is the label";
_label.BackColor = Color.Cornsilk;
_form.Controls.SetChildIndex(_label, 0); //trying to set the index before I add the label to the form
_form.Controls.Add(_label);

/*App Runs - Label does not show up*/
_label.Text = "This is the label";
_label.BackColor = Color.Cornsilk;
_label.BringToFront();
_form.Controls.Add(_label);

/*App Runs - Label does not show up*/
_label.Text = "This is the label";
_label.BackColor = Color.Cornsilk;
_form.Controls.Add(_label);
_label.BringToFront();

Как видите, я пробовал много разных вещей, и ничего не работает. Я также пытался добавить метку после добавления RECT, но безрезультатно. У меня аналогичная проблема с добавлением фонового изображения (хотя здесь не задается вопрос). Кто-нибудь знает более действенный способ сделать метку поверх RECT?

Кроме того, из-за API и dll, которые я использую, я не могу использовать что-то, кроме RECT или WinForms.


person tentmaking    schedule 23.08.2012    source источник
comment
RECT не является элементом управления — это просто определение размера. Что на самом деле делает рисунок? (msdn.microsoft.com/ en-us/library/windows/desktop/)   -  person Reed Copsey    schedule 23.08.2012
comment
Что вы имеете в виду под ректом? Вы имеете в виду, что рисуете прямоугольник в OnPaint и т. Д.? Стандартного элемента управления C# Rect нет. Покажите код, который помещает этот Rect на форму. Почему вы не применяете BringToFront к объекту, который хотите вывести на передний план, — к метке?   -  person Wolf5370    schedule 23.08.2012


Ответы (1)


Вы можете использовать BringToFront на самом ярлыке:

_label.BringToFront();

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

У меня есть RECT() (не элемент управления WinFrom), RECT заполняет всю WinForm

«RECT» не является элементом управления — это размер и положение определения. В зависимости от того, что вы используете для отображения фона, это может не сработать. Если он рисует всю форму, он может перезаписывать другие ваши элементы управления и «маскировать» их, независимо от того, что вы используете для z-порядка. Без дополнительной информации может быть сложно предоставить руководство, но вы должны убедиться, что метка перерисовывается после «RECT».

person Reed Copsey    schedule 23.08.2012
comment
Я думаю, вы можете быть правы в том, что не можете добавлять поверх того, что заполняет RECT. RECT заполняется увеличением экрана с использованием API увеличения. Я просто пытаюсь получить окончательные ответы, прежде чем признать поражение и перейти к другому решению пользовательского интерфейса. - person tentmaking; 23.08.2012