如何停止设计器为用户控件上的公共属性生成代码?
Posted
技术标签:
【中文标题】如何停止设计器为用户控件上的公共属性生成代码?【英文标题】:How do you stop the Designer generating code for public properties on a User Control? 【发布时间】:2010-09-06 23:30:57 【问题描述】:如何阻止设计器自动生成设置用户控件公共属性值的代码?
【问题讨论】:
我想知道设计师对你的属性做鬼的目的是什么...... 我在打开设计器时遇到了问题,因为我不小心从我正在使用的旧版本的类库中序列化了一个对象。追踪繁琐:***.com/questions/28272552/… 【参考方案1】:对要对设计器序列化隐藏的属性使用 DesignerSerializationVisibilityAttribute,并将参数设置为 Hidden。
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public string Name
get;
set;
【讨论】:
如果基本表单具有绑定到一个控件的文本属性的公共属性,则非常有用。编辑器希望以继承的形式设置值,因此与本地化混淆。类似于 SO 上的another problem。【参考方案2】:将以下属性添加到控件中的属性:
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
【讨论】:
【参考方案3】:我正在使用 VS 2013 对 Erik 的回答稍作改动。
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new string Name
get;
set;
【讨论】:
不幸的是,我将该属性命名为“名称”。最好将其命名为不同的名称,因为所有控件都已具有 Name 属性。这就是您必须使用 new 关键字来隐藏基类属性的原因。 :) 是的,自从回答后我自己就犯了这个错误。 正如埃里克本人所提到的这个答案,并没有为实际问题添加任何新内容 不需要反对票,新的是必需的。请正确阅读 Erik 的回复。 @peterincumbria 如果您正在使用的类已经具有 name 属性并且您正在尝试编写自己的属性,这只是一个要求。因此,这不会为答案添加任何内容,因为属性是答案而不是新关键字。或者,我可以编写自己的答案,使用 override 关键字而不是 new 覆盖属性。以上是关于如何停止设计器为用户控件上的公共属性生成代码?的主要内容,如果未能解决你的问题,请参考以下文章