我有许多名为
的资源My.Resources.diceDark1
My.Resources.diceDark2
My.Resources.diceDark3...
我想做点什么
For i as integer = 1 to 10
button1.backgroundimage = My.Resources.diceDark i
Next
因此它将遍历所有资源并将背景图像更改为
答案 0 :(得分:1)
Designer为您添加到Resources
的图像等创建属性getter和setter。因此,对于名为dicedark1.jpg
的图像,它会创建:
Friend ReadOnly Property diceDark1() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("diceDark1", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
您可以在Resources.Designer.vb
中看到这些内容。所以资源"名称"你使用的不是变量,而是Resources
对象的属性名称。但是你可以做什么,就是你在getter中看到的,即使用GetObject
:
Private DiceNames As String() = {"diceDark1", "diceDark2", "diceDark3" ...}
...
' assuming you have control refs in an array also:
For i As Int32 = 0 To 6
picBox(i).BackgroundImage = My.Resources.ResourceManager.GetObject(DiceNames(i))
Next i
属性包装器显然可以更轻松地获取您的资源。要使用循环,您需要在数组或列表中使用目标控件,因为picBox + 1
或其任何变体都不会比My.Resources.DiceDark i
引用更好。