«Нет свойства по умолчанию» - PullRequest
1 голос
/ 20 августа 2011

Я ввел в строки

Private Sub tmrAnalogueCounter_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrAnalogueCounter.Tick
        AnalogCounter += 1
        If AnalogCounter >= 17 Then
            tmrAnalogueCounter.Enabled = False
        End If
        pboTimer.Image = My.Resources.ResourceManager("Timer" & AnalogCounter)
End Sub

К сожалению, я получаю сообщение об ошибке "Класс 'System.Resources.ResourceManager' не может быть проиндексирован, поскольку у него нет свойства по умолчанию.

Я не понимаю, почему, "pboTimer.Image = My.ResourceManager (" Timer "& AnalogCounter)" заменили

Select Case AnalogCounter
        Case 1 : pboTimer.Image = My.Resources.Timer1
        Case 2 : pboTimer.Image = My.Resources.Timer2
        Case 3 : pboTimer.Image = My.Resources.Timer3
        Case 4 : pboTimer.Image = My.Resources.Timer4
        Case 5 : pboTimer.Image = My.Resources.Timer5
        Case 6 : pboTimer.Image = My.Resources.Timer6
        Case 7 : pboTimer.Image = My.Resources.Timer7
        Case 8 : pboTimer.Image = My.Resources.Timer8
        Case 9 : pboTimer.Image = My.Resources.Timer9
        Case 10 : pboTimer.Image = My.Resources.Timer10
        Case 11 : pboTimer.Image = My.Resources.Timer11
        Case 12 : pboTimer.Image = My.Resources.Timer12
        Case 13 : pboTimer.Image = My.Resources.Timer13
        Case 14 : pboTimer.Image = My.Resources.Timer14
        Case 15 : pboTimer.Image = My.Resources.Timer15
        Case 16 : pboTimer.Image = My.Resources.Timer16
        Case 17 : pboTimer.Image = My.Resources.Timer17
        Case Else : tmrAnalogueCounter.Enabled = False
End Select

Есть идеи как это исправить?

1 Ответ

2 голосов
/ 20 августа 2011

Вы получаете эту ошибку, потому что в ResourceManager не определено свойство по умолчанию.Из Свойства по умолчанию :

Свойство по умолчанию - это свойство, которое Visual Basic будет использовать, если для объекта не было задано никакого конкретного свойства.Свойства по умолчанию полезны, потому что они позволяют сделать ваш исходный код более компактным, пропуская часто используемые имена свойств.

Поскольку свойство по умолчанию не определено, вам придется явно вызвать свойство, чтобы вернутьценность, которую вы хотите.В этом случае это может быть:

pboTimer.Image = My.Resources.ResourceManager.GetObject("Timer" & AnalogCounter)

Вам также может понадобиться подробное преобразование возвращенного объекта в изображение:

pboTimer.Image = CType(My.Resources.ResourceManager.GetObject("Timer" & AnalogCounter), System.Drawing.Image)
  Or
pboTimer.Image = CType(My.Resources.ResourceManager.GetObject("Timer" & AnalogCounter), System.Drawing.Bitmap)
...