有没有办法安排RectangleShape
控件将它们发送到VB.NET中的后面和前面。我需要更改他们的Z轴顺序,以便我可以更改前面的矩形。这是我的形象:
我想在蓝色矩形后面发送小矩形。我希望能够在运行时从代码中执行此操作。
答案 0 :(得分:1)
Visual Basic Power Packs Controls库中的形状控件不会直接添加到表单的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})