Организовать прямоугольные формы, отправленные сзади или спереди
Есть ли способ устроить RectangleShape
элементы управления для отправки их сзади и спереди в VB.NET. Мне нужно изменить порядок их оси Z, чтобы я мог изменить, какой прямоугольник находится впереди. Вот изображение моей формы:
Я хотел бы отправить маленькую прямоугольную форму за синим прямоугольником. Я хотел бы иметь возможность сделать это из кода во время выполнения.
1 ответ
Элементы управления формой из библиотеки элементов управления Visual Basic Powers не добавляются непосредственно в форму Controls
коллекция. Вместо этого они добавляются в специальный ShapeContainer
контроль. Обычно контейнер называется ShapeContainer1
, но если нет, вы можете найти его имя, посмотрев на форму .Designer.vb
файл.
Все формы хранятся в ShapeContainer1.Shapes
коллекция. Чтобы изменить Z-порядок фигур, вам нужно изменить порядок, на который они ссылаются в этой коллекции. Другими словами, вам нужно изменить их индекс. Один с индексом 0 считается первым. Поэтому, чтобы отправить фигуру на передний план, вам нужно изменить ее индекс на 0, например:
ShapeContainer1.Shapes.SetChildIndex(RectangleShape1, 0)
ShapeContainer1.Refresh()
Вам нужно позвонить Refresh
после изменения индекса, чтобы заставить фигуры быть немедленно перерисованы.
Если вы хотите изменить их во время разработки, так как нет способа изменить заказ с помощью дизайнера, вы должны вручную изменить .Designer.vb
файл для вашей формы. Например, вы можете изменить эту строку в вашем InitializeComponents
метод из этого:
Me.ShapeContainer1.Shapes.AddRange(New Microsoft.VisualBasic.PowerPacks.Shape() {Me.RectangleShape2, Me.RectangleShape1})
К этому:
Me.ShapeContainer1.Shapes.AddRange(New Microsoft.VisualBasic.PowerPacks.Shape() {Me.RectangleShape1, Me.RectangleShape2})