关于c#:用户控件属性设计器属性

关于c#:用户控件属性设计器属性

User Control Property Designer Properties

对于Windows Mobile上的C#UserControl(尽管如果知道它对于完整的Windows来说,请回答...可能会起作用),如何更改控件的公共属性之一在Designer Properties窗口中显示的内容。 例如:

1
2
3
4
5
6
7
private Color blah = Color.Black;

public Color Blah
{
    get { return this.blah; }
    set { this.blah = value; }
}

这将为控件显示,但在"其他"类别中,没有描述或默认值。 我尝试使用System.ComponentModel中的设置,例如" DesignerCategory",例如:

1
[DesignerCategory("Custom")]

但是说这仅对类声明有效...可以发誓这是我之前使用的System.ComponentModel项...

更新:

@约翰说:

DesignerCatogy is used to say if the
class is a form, component etc.

Try this:

[Category("Custom")]

是否需要使用特定的命名空间才能获得这些命名空间?
我已经完全尝试过了,编译器无法识别它们。

在.NETCF中,我似乎可以从System.ComponentModel获得的全部是:

1
2
3
4
5
6
DataObject,
DataObjectMethod,
DefaultValue,
DesignerCategory,
DesignTimeVisible,
EditorBrowsable

唯一不会尖叫的是EditorBrowsable


这对您有用吗?我不从事CF开发,但是您似乎需要添加一些XML元数据来启用它:

http://blogs.msdn.com/bluecollar/archive/2007/02/08/adding-compact-framework-design-time-attributes-or-more-fun-with-textboxes.aspx

有趣的读法。似乎从CF中剥夺了很多设计时间支持,因为您没有在设备上进行设计。对我来说这似乎有点怪异。无法想象使用手持设备作为开发平台!

向下滚动大约一半以获取好东西;)


DesignerCatogy用于说明类是否为表单,组件等。

对于全窗口,您需要的属性是:

[System.ComponentModel.Category("自定义")]

对于描述,您可以使用[System.ComponentModel.Description("这是描述")]

一起使用

[System.ComponentModel.Category(" Custom"),System.ComponentModel.Description("这是描述")]

但是,这是system.dll的一部分,对于Windows Mobile来说可能有所不同。


本文不建议任何人在设备上进行设计。但是,当您创建一个Compact Framework项目时,该紧凑型框架(用于台式机)将用于处理设计时渲染。如果您考虑一下,这就是您的期望。使用相同的框架(或几乎如此)在设计时在PC上进行渲染,然后在运行时在设备上进行渲染。问题在于设计时间属性未添加到紧凑框架中(我认为是为了减小尺寸)。


推荐阅读