1

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

在此处输入图像描述

我想发送蓝色矩形后面的小矩形。我希望能够在运行时从代码中做到这一点。

4

1 回答 1

1

Visual Basic Power Packs 控件库中的形状控件不会直接添加到窗体的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})
于 2014-03-21T18:52:55.033 回答