【发布时间】:2019-01-17 02:37:58
【问题描述】:
我正在尝试对表单控件进行分类/分组,以便能够一次将更改应用于其中的几个。例如,我可能想要启用/禁用它们。
我应该将表单控件添加到集合、字典还是应该创建类?
理想情况下,我想创建类别和子类别。我将为类别和子类别定义属性。类别的属性将传递给“子”子类别。 例如,如果 CategoryA 的字体是“arial”,那么子类别 A1、A2 等的字体也将是“arial”。 我只会“存储”子类别中的对象。如果您对我如何构建这样的架构有任何想法,请提出一些建议。
在这个阶段我已经创建了一个字典。我很确定我无法使用字典和集合创建我想要的类别/子类别,但这仍然是朝着正确方向迈出的第一步(批量更改)。
我在使用字典时遇到的问题是特定于控件的属性/方法不会显示在 IntelliSense 中。我怎样才能使它们可用?
Public dct As New Dictionary(Of Object, Integer)
Dim ctlr As Control
Dim i As Integer
i = 1
For Each ctlr In Controls
dct.Add(ctlr.Name, i)
i = i + 1
Next
For Each Item In dct
'Enabled is not available
Item.Enabled = False
Next
【问题讨论】:
-
您尝试使用
Dictionary(Of Control, Integer)吗?您当前的代码仍然可以工作,只是无法知道 Object 肯定是 Control,因此 Intellisense 不会提供 Control 属性。 -
还有 Tab 属性,您可以在其中添加额外信息
-
@A 朋友:是的,我有,但没有任何改变
-
您的项目中有 Option Explicit On 吗?你需要做
For each Item as Control In dct -
@一个朋友:不,它没有。添加“作为控件”会生成错误“'System.Collections.Generic.KeyValuePair(Of System.Windows.Forms.Control, Integer)'类型的值无法转换为'System.Windows.Forms.Control'”
标签: vb.net winforms class dictionary collections