Class vb6类属性作为类的数组
远远地说,这个旧的vb6应用程序正在折磨我。在.NET之前,我是如何开发这些东西的 我试图创建一个vb6类,其属性成员是UDT或其他类的数组 e、 g 我有一个名为Monitor的类,它公开了一些属性: 决议 旋转 名称 宽度 身高Class vb6类属性作为类的数组,class,vb6,Class,Vb6,远远地说,这个旧的vb6应用程序正在折磨我。在.NET之前,我是如何开发这些东西的 我试图创建一个vb6类,其属性成员是UDT或其他类的数组 e、 g 我有一个名为Monitor的类,它公开了一些属性: 决议 旋转 名称 宽度 身高 在我的主程序模块中,我有一个名为SystemConfig的类,它有一个名为MonitorConfig的属性,但以前它只支持一项。因为我们现在在多个监视器的世界中运行,所以我需要这个属性来支持多个项目 不幸的是vb6没有给我t的列表,所以我需要下一个最好的东西。我的第
在我的主程序模块中,我有一个名为SystemConfig的类,它有一个名为MonitorConfig的属性,但以前它只支持一项。因为我们现在在多个监视器的世界中运行,所以我需要这个属性来支持多个项目 不幸的是vb6没有给我t的列表,所以我需要下一个最好的东西。我的第一个想法是使用数组 以下是我的尝试:
Private m_MonitorConfig() As Monitor
Public Property Get MonitorConfig() As Monitor()
MonitorConfig = m_MonitorConfig
End Property
Public Property Let MonitorConfig(val() As Monitor)
m_MonitorConfig = val
End Property
如何让属性识别MonitorConfig属性内外的数组值
谢谢要么改变属性接受索引参数,这样就可以把它当作语法数组对待,或者考虑使用集合代替数组。要么改变属性接受索引参数,这样就可以把它当作语法数组对待。或者考虑使用集合而不是数组。 您的代码可以,但性能不太好。如果您需要对监控器进行只读访问,但不希望实现完整的集合,那么一个简单的访问器属性和计数属性就足够了 大概是这样的:
Option Explicit
Private Declare Function EmptyMonitorsArray Lib "oleaut32" Alias "SafeArrayCreateVector" (Optional ByVal vt As VbVarType = vbObject, Optional ByVal lLow As Long = 0, Optional ByVal lCount As Long = 0) As Monitor()
Private m_MonitorConfig() As Monitor
Property Get MonitorConfig(ByVal Index As Long) As Monitor
Set MonitorConfig = m_MonitorConfig(Index)
End Property
Property Get MonitorConfigs() As Long
MonitorConfigs = UBound(m_MonitorConfig) + 1
End Property
Private Sub Class_Initialize()
m_MonitorConfig = EmptyMonitorsArray
End Sub
您的代码还可以,但性能不太好。如果您需要对监控器进行只读访问,但不希望实现完整的集合,那么一个简单的访问器属性和计数属性就足够了 大概是这样的:
Option Explicit
Private Declare Function EmptyMonitorsArray Lib "oleaut32" Alias "SafeArrayCreateVector" (Optional ByVal vt As VbVarType = vbObject, Optional ByVal lLow As Long = 0, Optional ByVal lCount As Long = 0) As Monitor()
Private m_MonitorConfig() As Monitor
Property Get MonitorConfig(ByVal Index As Long) As Monitor
Set MonitorConfig = m_MonitorConfig(Index)
End Property
Property Get MonitorConfigs() As Long
MonitorConfigs = UBound(m_MonitorConfig) + 1
End Property
Private Sub Class_Initialize()
m_MonitorConfig = EmptyMonitorsArray
End Sub
再看一看这个问题:再看一看这个问题:因为我们现在在一个由多个监视器组成的世界中运作,现在是15年前,上千年:因为我们现在在一个由多个监视器组成的世界中运作,现在是15年前,上千年:+1。集合应优先于数组IMHO。带有索引arg的属性值得考虑,但我发现自己使用集合的次数是10次中的9次。集合应优先于数组IMHO。带有索引arg的属性值得考虑,但我发现自己使用集合的次数是10次中的9次。