阻止 windows 表单设计器设置 属性 的属性是什么

What is the attribute to stop windows form designer from setting a property

我一直在用户控件上使用 [System.ComponentModel.ReadOnly] 来防止设计者设置属性,但我已经阅读了一些表明 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 应该用于此目的。哪个是正确的?如果不是[System.ComponentModel.ReadOnly],应该什么时候使用这个属性?

好吧,它确实这样做了,但不是它的本意。 [ReadOnly(true)] 阻止用户修改属性 window 中的 属性。它仍然显示,但变灰了。这实际上有用的可能性很小,我想不出一个很好的例子。一个可能的极端情况是自定义 TypeDescriptor,它根据其他 属性 值动态更改只读状态。但那是火箭科学。

您通常使用 [Browsable(false)] 来防止 属性 出现。并且 DesignerSerializationVisibility.Hidden 阻止代码序列化程序在 InitializeComponent() 方法中保留一个值,如果用户不能修改它,该值就不太可能有用。尽管 [DefaultValue] 通常已经确保了这一点。 YMMV.