无法在运行时读取属性

时间:2014-07-10 11:17:52

标签: vb6

当我尝试阅读控件的"Left property"时,它会给我错误,

"Left cannot be read at run time"

这是我的代码,

for each ctrl in me.controls
    if ctrl.left > 2490 then
        'app logic
    end if
next

此代码有什么问题。它在另一台计算机上没有错误。 任何人都可以告诉我有什么问题

2 个答案:

答案 0 :(得分:5)

您的表单上可能只有一个设计时可放置的控件,例如timer,它没有运行时左属性。您可以检查控件类型,以确保只检查TextBoxLabelButton等,或者只使用on error resume next

使用TypeOf检查对象类型:

Dim ctrl As Control

For Each ctrl In Me.Controls
    If TypeOf ctrl Is Timer Then
    Else
        If ctrl.Left > 2490 Then
            'app logic
        End If
    End If
Next

使用TypeName检查对象类型:

Dim ctrl As Control

For Each ctrl In Me.Controls
    If TypeName(ctrl) = "Timer" Then
    Else
        If ctrl.Left > 2490 Then
            'app logic
        End If
    End If
Next

使用On Error Resume Next

Dim ctrl As Control

On Error Resume Next
for each ctrl in me.controls
    if ctrl.left > 2490 then
        'app logic
    end if
Next

答案 1 :(得分:1)

如果您使用最后一种方法,处理错误内联重新添加任何意外错误非常重要。否则,如果您得到的错误与您预期的不同,则可能很难找到它。所以:

Dim ctrl As Control

On Error Resume Next
for each ctrl in me.controls
    if ctrl.left > 2490 then
        Select Case Err.Number
           Case 0        'No Error, ignore
           Case 393      'The error you want to ignore 
              Err.Clear  'Reset for next iteration
           Case Else
              On Error Goto 0
              Err.Raise Err.Number  'Reraise any unexpected errors
        End Select
        'app logic
    end if
Next
On Error Goto 0