我知道当我使用 Enum
并将其作为类/UserControl 的 Property
时,它将显示/显示它的下拉列表如下:
但这是显示可用值(如“下拉列表”)的唯一方法吗?我们还有其他方法吗?
编辑:范围是Windows窗体应用
对于那些不理解我的人
在该图像 ( http://i.stack.imgur.com/NMank.png ) 中,“DataBase” 是设计时 Property
的 Name
。
值:NotChoseYET
、ChooseDataBase
、ThereAlreadyDataBase
是我创建的 Enum 中的值。
如您所见,它们在设计中显示在 DropDownList
中,所以我想问一下是否有其他不使用 Enum 的显示方式?
最佳答案
更新
经过大量的搜索,我发现我的回答只有部分正确,所以我想再回答一次。
您的问题的答案是肯定的否,我们有一些其他方法可以将属性值显示为DropDownList
。就像我在旧答案中提到的那样,如果值来自某种Set
,或者换句话说它属于值的集合,它将显示为DropDownList
无需任何额外的努力(因为UITypeEditor
已经为他们指定了,这一点稍后你就会明白)。以下是 3 个示例:
- 如果
Property
是一个bool
,在设计器中它会显示一个DropDownList
包含True
和错误
;
- 如果
Property
是Font.Name
,在设计器中它会显示一个带有SmallIcon
的DropDownList
>;
- 如果
Property
是Color
,在设计器中它会向您展示封装在TabControl
.
从那些“原生”示例中,您可能会意识到一个事实:在设计期间,我们可以以某种方式使用 Property Tab
中的简单 DropDownList
以外的一些控件。例如,Color
属性提供 TabControl
而不是简单的 DropDownList
,Font.Name
属性提供自定义的 DropDownList
。
是的,这就是我要讲的第二件事。您不仅可以自定义 DropDownList
中的项目,还可以自定义 Value Choosing Editor
的 View
。
但是,这非常棘手且不简单。不建议您这样做,除非它确实在设计时为您的用户控件增加了值(value)。
简而言之,您需要继承UITypeEditor
,并重写2个函数:
GetEditStyle()
,其中
indicates to the design environment which kind of user interface your UI type editor implements
和EditValue()
,其中
establishes the interaction between the design environment and the user interface for editing your custom type
然后对于使用 Editor
的属性,您需要向其添加 EditorAttribute
以指定选择值时使用的 Editor
该属性(property)的。
更多详细信息,建议您查看此MSDN walk-through ,其中解释了如何在设计时设计自定义的 Value Editor
。
现在回到我们离开的地方。 native 类型,如 bool
和 Color
,已经绑定(bind)到
UITypeEditor
,因此不需要做进一步的工作。
旧答案:
对于属性,您需要从一种Set
中选择一个值,并且该Set
中的所有元素将显示为Items
在设计时的 DropDownList
中。当您尝试定义 Set
时,Enum
是定义它们的一种方法。此外,您还可以使用 set of struct
,例如 Color
。换句话说,如果您有一个返回 Color
(或其他结构)的 Property
,在设计期间它将显示为一个下拉列表。
关于c# - 枚举是在设计时将属性值显示为下拉列表的唯一方法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25515238/