为控件提供命名的常数

与其它的部件类型一样,公有的枚举类型可以被控件部件(.ocx 文件)中的所有控件共享。在所有的 UserControl 代码模块中为部件放入公有的 Enums。

“部件设计的一般准则”中的“为控件提供命名的常数”讨论了提供常数、在属性中验证常数等技术。关于这个问题的一般信息请参阅该主题。

对于控件部件来说,还有两个特殊的因素:

“属性"窗口中的 Enum 成员名称

作为第一个因素的示例,请看如下的 Enum 和属性:

Public Enum DINOSAUR
   dnoTyrannosaur
   dnoVelociraptor
   dnoTriceratops
End Enum

Private mdnoFavoriteDinosaur As DINOSAUR

Public Property Get FavoriteDinosaur() As DINOSAUR
   FavoriteDinosaur = mdnoFavoriteDinosaur
End Property

Public Property Let FavoriteDinosaur(ByVal NewDino _
      As DINOSAUR
   mdnoFavoriteDinosaur = NewDino
   PropertyChanged "FavoriteDinosaur"
End Property

当在“属性”窗口中设置 FavoriteDinosaur 属性的时候,下拉列表中会含有 dnoTyrannosaur、dnoVelociraptor 和 dnoTriceratops。

可以看出来,既需要下拉列表中的名称看起来好看,又要求它不会与其它部件的 Enums 中使用的名称发生冲突,这里需要微妙的折中。

作为一般性的技巧,不要抛弃能够在全局列表中将常数分组的前缀(在上例中为“dno”)。前缀在一定程度上避免了名称冲突。另一方面,不要使前缀太长以致于名称变得晦涩。

不能用全局对象模拟字符串常数

控件部件中的类模块可以具有 Instancing 属性的两个值之一:Private 或 PublicNotCreateable。 在控件部件中不能使用 Instancing 值,也就不能使全局对象成为允许的,所以不可能使用全局对象的属性来模拟字符串常数,关于详细请参阅“控件设计的一般准则”的“为控件提供命名的常数”。