分享:VB6的Controls属性的一个BUG及解决方法

分享:VB6的Controls属性的一个BUG及解决办法
今天在程序设计时,发现Me.Controls("txt备注")在IDE运行时正常,编译成EXE文件后运行时,总是报“未找到控件 'txt备注'”的错误。原因不明,后来实在没办法,写了个FindControl函数来代替。代码如后:

---------------------------
测试备注
---------------------------
运行时错误 '730':

未找到控件 'txt备注'
---------------------------
确定   
---------------------------

Option Explicit

Private Sub Command1_Click()
    FindControl("txt备注").Text = "ok"
    MsgBox "pause"
    Me.Controls("txt备注").Text = "ok2" '使用Controls("txt备注")会报错
    'txt备注.Text = "ok"
End Sub

Function FindControl(ByVal AControlName As String) As VB.Control
    Dim i As Long
    For i = 0 To Me.Controls.Count - 1
        If (Me.Controls(i).Name = AControlName) Then
            Set FindControl = Me.Controls(i)
            Exit Function
        End If
    Next i
    
End Function

Controls

------解决方案--------------------
经测试,确实如此,txt备注,确实有这样的问题
但是,如果名称不是叫 txt备注,而是包含别的汉字比如 txt不是东西

那么一切正常


或者,叫做 备注txt 也正常


------解决方案--------------------
叫做 txt备注a 也正常
------解决方案--------------------
哈哈,名字叫  txt备注吧  也正常
------解决方案--------------------
这名字在内存中是怎样表示的?该不会机器码层次的问题吧
------解决方案--------------------
引用:
这个BUG的原因不清楚。我的这个小管理程序中,这样命名,是因为我这些控件的名称和数据表中相对应的“备注”字段有着对应关系。

worldy测试的内容中不会也有这个字段吧

怀疑是读取双字节错位引起的
不混用字符和汉字的话
应该不会出现这样的情况
------解决方案--------------------
真神奇...
用"备注"做结尾就不行?
------解决方案--------------------
上面解答的都非常好,可以仔细看看,学习下

------解决方案--------------------
chk备注?
txt备_注?
txt_备注?
------解决方案--------------------
你用什么版本的 VB-IDE 编译的?
既然用了中文控件名,就用中文版 VB-IDE 开发。
试试是否还有问题?
------解决方案--------------------
经测试,确实如此,txt备注,确实有这样的问题
但是,如果名称不是叫 txt备注,而是包含别的汉字比如 txt不是东西

那么一切正常


或者,叫做 备注txt 也正常


------解决方案--------------------
分享:VB6的Controls属性的一个BUG及解决方法
------解决方案--------------------