Vb6 表5和表5有什么区别!ProgressBar.Max和Form5.ProgressBar.Max?

Vb6 表5和表5有什么区别!ProgressBar.Max和Form5.ProgressBar.Max?,vb6,Vb6,我正在看一个非常古老的VB6,遇到了如下用法 Form5!ProgressBar.Max = time_max 及 仔细阅读这个问题的答案并阅读这一页,我推断这些东西的意思与 Form5.ProgressBar.Max = time_max Form5.ProgressBar.Value = current_time 但事实并非如此。有谁能证实或否认这一点,和/或用一个音节的文字向我解释一下吗?是的,格式5!ProgressBar几乎完全等同于Form5。ProgressBar 就我所记得的

我正在看一个非常古老的VB6,遇到了如下用法

Form5!ProgressBar.Max = time_max

仔细阅读这个问题的答案并阅读这一页,我推断这些东西的意思与

Form5.ProgressBar.Max = time_max
Form5.ProgressBar.Value = current_time

但事实并非如此。有谁能证实或否认这一点,和/或用一个音节的文字向我解释一下吗?

是的,
格式5!ProgressBar
几乎完全等同于
Form5。ProgressBar

就我所记得的,有一个区别:如果
Form5
对象没有
ProgressBar
成员(即表单没有名为ProgressBar的控件),则行为不同。点表示法在编译时检查,感叹号表示法在运行时检查

  • Form5.ProgressBar
    将不会编译
  • Form5!ProgressBar将编译,但在运行时会给出错误
    

IMHO在VB6中首选点符号,尤其是在访问控件时。感叹号仅在向后兼容非常旧的VB版本时才受支持。

表单的默认成员是(间接地)控件集合

bang(!)语法用于VB中的集合访问,在许多情况下,编译器利用它来早期绑定那些通过后期绑定访问速度较慢的内容

与其说它不受欢迎,倒不如说它更可取

但是,在这种情况下,由于表单对象的默认成员是
[\u default]As Object
,其中包含对
控件As Object
实例的引用,因此与以下语法相比,该语法没有特别的优点或缺点:

Form5("ProgressBar").Value
我同意,在这种情况下,最好以表单成员的身份更直接地访问控件,如下所示:

Form5.ProgressBar.Value
了解这两者之间的区别就是真正了解VB。但这不仅仅是语法上的,两条“路径”做了不同的事情,得到了相同的结果


希望这个答案能提供一个解释,而不仅仅是援引伏都教。

!符号也用于默认访问器函数/属性,例如
记录集!Blah
RecordSet.Fields(“Blah”)
@Deanna是的,正如他在Brian的问题中所解释的,他说他已经读过了。
Form5.ProgressBar.Value