是否有办法将字段组划分为“子结构”?在类内部
本文关键字:子结构 结构 内部 字段 划分 是否 | 更新日期: 2023-09-27 18:07:19
我正在为我的项目管理软件添加一个业务仪表板模块。
仪表板将很少被一小群用户使用,因为我希望避免使用静态/共享类或每次执行都会消耗硬件资源。
我的愿望是所有的仪表板颜色将从实例 Class:
DashBoardGUI
内的字段初始化,最终将被Disposed
/垃圾收集。这样做的目的是为程序员提供轻松更改共享颜色的能力,也为用户提供自定义首选颜色并将其保存在数据库中。
类非常基本,没有构造函数,没有大型或资源密集型对象,只有Color
类型的字段。
问题是有很多字段(~35),所以我在开发GUI时很难识别所有字段。
我的意思是,如果我想从DashBoardGUI
实例调用一个字段它非常令人困惑,看起来像这样:
Public Class CreateGUI
Inherits System.Windows.Forms.Panel
Private ColorKit As New DashBoardGUI
Protected Overridable Sub Init()
RightFlowLayOutPannel.BackColor = ColorKit.someConfusingFieldName1
LeftFlowLayOutPannel.BackColor = ColorKit.someConfusingFieldName2
RightClockGraph.BackColor = ColorKit.someConfusingFieldName3
LeftGroupBox.ForeColor = ColorKit.someConfusingFieldName4
End Sub
End Class
我的愿望是获得像使用名称空间一样的效果,"。"符号将减少选项并引导我到所请求的字段:
Public Class CreateGUI
Inherits System.Windows.Forms.Panel
Private ColorKit As New DashBoardGUI
Protected Overridable Sub Init()
RightFlowLayOutPannel.BackColor = ColorKit.FlPannels.FieldName
LeftFlowLayOutPannel.BackColor = ColorKit.FlPannels.FieldName
RightClockGraph.BackColor = ColorKit.Clocks.FieldName
LeftGroupBox.ForeColor = ColorKit.GroupBoxes.FieldName
End Sub
End Class
我已经尝试在 DashBoardGUI
类中创建nested Structures
和nested Classes
,但编译器不让我使用它们,如果它们被声明为静态/共享。如果我将它们声明为共享,这也是不可能的:
shared is not valid on a structure deceleration
(我明白为什么)。
所以我的问题是:我如何才能得到类似于使用多个共享类的命名空间的效果-调用字段,如:xxx.yyy.myfield当我使用实例类?
也许有人有完全不同的方法,可以给我一些建议?
也许我节省资源的方法(在上面解释)是错误的,我应该用静态/共享类创建名称空间?
谢谢。
我没有读这个问题,但也许是这样的:
Class A
Class B
Public myfield%
End Class
Public yyy As New B
End Class
样本使用:Dim xxx As New A
xxx.yyy.myfield = 123
您可以像
中显示的那样将您想要的字段分组到类中在VB中定义String ENUM。净
。
Class FlPanels
Private Key As String
Public Shared ReadOnly confusingField1 As FlPanels = New FlPanels("confusingField1")
Public Shared ReadOnly confusingField2 As FlPanels = New FlPanels("confusingField2")
Private Sub New(key As String)
Me.Key = key
End Sub
Public Function FieldName() As String
Return Me.Key
End Function
End Class
,并像这样使用:
FlPanels.confusingField1.FieldName