我正在向项目管理软件添加业务仪表板模块 仪表板很少会被一小部分用户使用 - 因此我希望避免使用静态/共享类或每次执行会消耗硬件资源。
我的愿望是所有仪表板颜色都将从实例类: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
我已尝试在 nested Structures
类中创建nested Classes
和DashBoardGUI
,但如果将它们声明为静态/共享,则编译器不允许我使用它们。如果我将它们声明为共享它也是不可能的:
shared is not valid on a structure deceleration
(我理解为什么)。
所以我的问题是:如何获得与使用具有多个共享类的命名空间类似的效果 - 调用字段如: xxx.yyy.myfield
当我使用实例类?
也许有人有一个完全不同的方法,可以建议我吗?
也许我保存资源的方法(在顶部解释)是错误的,我应该创建静态/共享类的命名空间?
答案 0 :(得分:2)
我没有读过这个问题,但可能是这样的:
Class A
Class B
Public myfield%
End Class
Public yyy As New B
End Class
样本使用:
Dim xxx As New A
xxx.yyy.myfield = 123
答案 1 :(得分:0)
您可以按照
中的显示对所需的字段进行分组e.g。
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