可以使用Me.Controls.Find(“”,True)(0)VB.NET查找rectangleShape

时间:2014-10-04 02:41:16

标签: vb.net

p1是矩形的名称

c = Me.Controls.Find("a1", True)(0)
ctype(c, RectangleShape).FillColor = Color.Gray

出现错误是索引超出了数组的范围。

1 个答案:

答案 0 :(得分:1)

RectangleShape不是Control,所以Controls.Find()永远找不到它。当你索引它时,你会得到一个空数组kaboom。您必须使用For Each迭代ShapeContainer.Shapes集合。所以,粗略地说:

    For Each shp As Shape In ShapeContainer1.Shapes
        If TypeOf shp Is RectangleShape AndAlso shp.Name = "a1" Then
            DirectCast(shp, RectangleShape).FillColor = Color.Gray
        End If
    Next

其中" ShapeContainer1"是否是隐藏得很好的控件,它可以作为形状的主体。