有没有办法安排RectangleShape
控件在 VB.NET 中将它们发送到后面和前面。我需要更改它们的 Z 轴顺序,以便更改前面的矩形。这是我的表格的图像:
我想发送蓝色矩形后面的小矩形。我希望能够在运行时从代码中做到这一点。
有没有办法安排RectangleShape
控件在 VB.NET 中将它们发送到后面和前面。我需要更改它们的 Z 轴顺序,以便更改前面的矩形。这是我的表格的图像:
我想发送蓝色矩形后面的小矩形。我希望能够在运行时从代码中做到这一点。
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})