Графические блоки и Zorder [.NET]
-
22-08-2019 - |
Вопрос
У меня возникают трудности с отображением нескольких (до 5) графических полей друг над другом, но я могу видеть их все.Будут отображаться только первый и последний.Я показываю их снизу вверх, правильно устанавливаю их местоположение и использую функцию BringToFront().Есть ли у кого-нибудь решение (если таковое имеется)?Спасибо за помощь!
Решение
Не уверен, в чем на самом деле заключается проблема;следующий код добавляет 5 сложенных PictureBox
подключается к форме и настраивает их таким образом, чтобы все они были видны.
private void AddStackedPictureBoxes()
{
for (int i = 0; i < 5; i++)
{
PictureBox pb = new PictureBox();
pb.BackColor = Color.FromArgb(i * 50, i * 50, i * 50);
pb.BorderStyle = BorderStyle.FixedSingle;
pb.Location = new Point(i * 10, i * 10);
pb.Size = new Size((5 - i) * 20, (5 - i) * 20);
Controls.Add(pb);
pb.BringToFront();
}
}
Возможно, это даст вам некоторое представление о том, почему у вас возникают проблемы.
Например, если вы вызываете BringToFront()
до того, как элемент управления будет добавлен в форму, это не будет иметь никакого эффекта.
Другие советы
Обязательно установите для каждого из них цвет фона на прозрачный.
и, как сказал Дэниел, BringToFront() работает только в том случае, если элемент управления уже находится в форме.