安排发送到后面或前面的矩形形状

时间:2014-03-21 17:16:41

标签: vb.net winforms rectangles powerpacks

有没有办法安排RectangleShape控件将它们发送到VB.NET中的后面和前面。我需要更改他们的Z轴顺序,以便我可以更改前面的矩形。这是我的形象:

enter image description here

我想在蓝色矩形后面发送小矩形。我希望能够在运行时从代码中执行此操作。

1 个答案:

答案 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})