用户控件属性设计器属性

时间:2020-03-05 18:39:08  来源:igfitidea点击:

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

private Color blah = Color.Black;

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

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

[DesignerCategory("Custom")]

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

更新:

@约翰说:

DesignerCatogy is used to say if the
  class is a form, component etc.
  
  Try this:
  
  [Category("Custom")]

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

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

DataObject,
DataObjectMethod,
DefaultValue,
DesignerCategory,
DesignTimeVisible,
EditorBrowsable

唯一不会尖叫的是EditorBrowsable

解决方案

回答

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

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

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

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

一起使用

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

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

回答

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

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

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

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

回答

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