2015-06-15 5 views
1

У меня есть ряд ресурсов, называетсяИспользуйте String, чтобы найти 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 

Так это будет цикл через все ресурсы и изменить фоновое изображение к этому

ответ

1

Дизайнер создает свойство getters и seters для изображений и т. д. вы добавляете к 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.

+0

Спасибо! Работает отлично! – Friedpanseller

Смежные вопросы