使用字符串查找 my.resources



我有许多资源称为

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引用更好地工作。

最新更新