我一直在用户控件上使用[System.ComponentModel.ReadOnly]来阻止设计器设置属性但是我已经阅读了一些指示 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]应该用于此目的。哪个是对的?如果它不是[System.ComponentModel.ReadOnly],应该何时使用此属性?
答案 0 :(得分:4)
嗯,它确实如此,但不是它的意图。 [ReadOnly(true)]阻止用户在“属性”窗口中修改属性。它仍然显示,但是显示为灰色。这实际上有用的可能性相当小,我无法想到一个很好的例子。可能的角落情况是自定义TypeDescriptor,它根据其他属性值动态更改只读状态。但那是火箭科学。
您通常使用[可浏览(虚假)]来阻止该属性显示。并且DesignerSerializationVisibility.Hidden阻止代码序列化程序保留InitializeComponent()方法中的值,如果用户无法修改它,则该方法不太可能有用。虽然[DefaultValue]通常已经确保了这一点。 YMMV。