【问题标题】:Can I prevent SharpDevelop design view from setting a property's value in InitializeComponent?我可以阻止 SharpDevelop 设计视图在 InitializeComponent 中设置属性值吗?
【发布时间】:2011-01-18 15:59:52
【问题描述】:

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

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

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

我如何告诉 DV自动为我定义的某些属性赋值?

【问题讨论】:

    标签: c# .net custom-controls sharpdevelop design-view


    【解决方案1】:

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

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

    您可以选择three different values

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-20
      • 2011-07-08
      相关资源
      最近更新 更多