【发布时间】:2012-01-23 16:57:25
【问题描述】:
我想用属性标记我的 Windows 窗体上的某些控件。所以我在TestAttributes.Designer.cs 中添加了属性:
[AmbientValue(true)]
private System.Windows.Forms.Label label1;
但每当我使用设计器的属性窗口更改 label1 的Modifiers-property 时,设计器就会默默地从声明中删除我的属性:
public System.Windows.Forms.Label label1;
我尝试将声明放在TestAttributes.cs 中,以免与 .Designer.cs 文件混淆。但是当更改Modifiers 属性时,声明将移回TestAttributes.Designer.cs 并且属性消失了。
如何防止设计器删除我的属性?
编辑:
最好的问题是:我可以永久将控件的声明移出*.Designer.cs 文件,以便我可以在那里应用属性吗?正如我在上面所写的,它在某些情况下会被移回。
谢谢! 丰富
【问题讨论】:
-
这有很多问题。首先,您不应该修改
*.Designer.cs文件,因为它是由设计器自动重新生成的。这就是它默认隐藏的原因。其次,将Label控件的环境值设置为true没有任何意义。标签控件怎么可能是true?如有必要,从控件继承并添加所需的任何默认属性,然后在设计器中使用 那个 自定义控件。 -
是的,我知道修改 .Designer.cs 文件是不好的,但我想也许有办法让 Label 的声明脱离那里。但我想我尝试的同样糟糕;-)。
Label和AmbientValue只是测试应用程序中的示例,在我的实际应用程序中它是一个自定义属性。 -
您始终可以将
*.Designer.cs文件中的内容移出到您的自己的代码文件中。然后,设计师不会修改它们。当您想将代码添加到默认的Dispose方法时,这与您所做的相同。如果您知道它不好/不起作用,那么您仍然不清楚为什么要这样做。 -
我确实尝试将声明移出
*.Designer.cs并移到我自己的代码文件中。但它被移回*.Designer.cs,当我更改Modifiers属性时,我的属性丢失了。
标签: c# .net winforms visual-studio windows-forms-designer