“没有默认属性”

时间:2011-08-20 06:40:30

标签: vb.net properties default

我输入了

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

不幸的是,我收到错误“Class'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 个答案:

答案 0 :(得分:2)

您收到此错误,因为ResourceManager上没有定义默认属性。来自Default Properties

  

默认属性是Visual Basic在no时使用的属性   已为对象命名特定属性。默认属性很有用,因为它们允许您通过省略常用属性名来使源代码更紧凑。

由于没有定义默认属性,您必须显式调用该属性以返回所需的值。在这种情况下,它将是:

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)