3

我发现设计视图 (DV) 很好,但试图改变它自动注入代码的方式InitializeComponent非常困难。有时它的自动代码会破坏程序。

例如,DV 自动查看我的自定义 UserControl 的每个属性,然后将每个属性分配给InitializeComponent. 但我不希望它为某些属性分配值,因为如果使用不正确,我的一些设置器会抛出运行时异常。我可以手动更正InitializeComponent,但只要我对设计进行更改,SharpDevelop 就会再次重新生成该功能。

还有另一种情况,我让默认构造函数根据某些因素设置大小,但随后InitializeComponent会立即将其设置为另一个静态值。

如何告诉 DV不要自动为我定义的某些属性分配值?

4

1 回答 1

4

除非我误解了您的情况,否则您似乎通过尝试修改或重新配置 SharpDevelop 的行为来找出错误的树。即使您设法更改它,您也不会影响 Visual Studio 的行为,并且您不会帮助您的自定义控件的任何其他消费者,他们没有碰巧(和/或不想)配置他们的相应的设计师。

相反,您似乎应该只使用属性标记自定义控件公开的[DesignerSerializationVisibility]属性。这向设计者准确地指示了该属性的值应如何序列化到InitializeComponent方法中。

您可以选择三个不同的值

  • Visible表示该属性的值应保留在初始化代码中
  • Hidden表示该属性的值不应保留初始化代码中
  • Content表示应该为分配给属性的对象的每个公共(非隐藏)属性生成初始化代码

默认值为Visible,这会导致尽可能序列化属性的值。

于 2011-01-18T16:19:59.790 回答