我一直在用户控件上使用 [System.ComponentModel.ReadOnly] 以防止设计器设置属性,但我已经阅读了一些内容表明 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 应用于此目的。哪个是对的?如果它不是[System.ComponentModel.ReadOnly],那么什么时候应该使用这个属性?
最佳答案
嗯,它确实做到了这一点,但并不是它的意图。 [ReadOnly(true)] 阻止用户修改“属性”窗口中的属性。它仍然显示,但呈灰色。这实际上有用的可能性相当小,我想不出一个好的例子。一个可能的极端情况是自定义 TypeDescriptor,它根据其他属性值动态更改只读状态。但这是火箭科学。
您通常使用 [Browsable(false)] 来阻止该属性显示。 DesignerSerializationVisibility.Hidden 可阻止代码序列化程序保留 InitializeComponent() 方法中的值,如果用户无法修改该值,则该值不太可能有用。尽管 [DefaultValue] 通常已经确保了这一点。 YMMV。
关于c# - 阻止 Windows 窗体设计器设置属性的属性是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45612853/