Что такое атрибут, чтобы остановить конструктор форм windows от установки свойства


Я использую [System.ComponentModel.ReadOnly] на пользовательских элементах управления, чтобы предотвратить конструктор от установки свойств, но я прочитал некоторые вещи, которые указывают [DesignerSerializationVisibility (DesignerSerializationVisibility.Скрытые)] должны использоваться для этой цели. Что правильно? Если его нет [системы.ComponentModel.ReadOnly], когда следует использовать этот атрибут?

1 2

1 ответ:

Что ж, он делает это, но не его намерение. [ReadOnly (true)] запрещает пользователю изменять свойство в окне свойств. Она все еще видна, но уже серая. Вероятность того, что это действительно полезно, довольно мала, я не могу придумать хороший пример. Возможный угловой случай-это пользовательский TypeDescriptor, который динамически изменяет состояние только для чтения в зависимости от других значений свойств. Но это уже ракетостроение.

Вы обычно используете [Browsable (false)], чтобы предотвратить собственность от появления. И DesignerSerializationVisibility.Скрытый, чтобы остановить сериализатор кода от сохранения значения в методе InitializeComponent (), который вряд ли будет полезен, если пользователь не может изменить его. Хотя это [DefaultValue], как правило, уже гарантирует это. YMMV.