我有许多资源称为
My.Resources.diceDark1
My.Resources.diceDark2
My.Resources.diceDark3...
我想做类似的事情
For i as integer = 1 to 10
button1.backgroundimage = My.Resources.diceDark i
Next
因此,它将循环浏览所有资源并将背景图像更改为该资源
设计器为您
添加到Resources
的图像等创建属性获取器和设置器。 因此,对于名为 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
对象的属性名称。 但是你能做的,是你在吸气器中看到的,即使用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
引用更好地工作。