Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.224.251.136] |
|
Сообщ.
#1
,
|
|
|
Здрасте, интерсует вопрос, как динамически указывать какие свойства сериализовывать у компонета а кикие нет, вот смотрите, допустим есть 2 компонента:
Певый, со свойством A: public partial class BaseComponent : Component { public BaseComponent () { InitializeComponent (); } public BaseComponent (IContainer container) { container.Add (this); InitializeComponent (); } [DefaultValue(0)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] public int A { get; set; } } Второй, у которого это свойство A указанно в 123 скажем public partial class MyComponen : BaseComponent { public MyComponen () { InitializeComponent (); } public MyComponen (IContainer container) { container.Add (this); InitializeComponent (); } /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent () { // // MyComponent // this.A = 123; } } Далее, беру компонент MyComponen, и кидаю его на форму или на другой компонент, и тут же вижу в дизайнере // // myComponent1 // this.myComponent1.A = 123; Собственно вопрос, как это убрать? Мне то известно, что свойство равно 123. Есть какойто умный аттрибут который посмотрит в базовый класса MyComponent и сравнит её с текущим значением и пометит серым если значения совпадают? Вариант с переопределением DefaultValue, не предлагать. |
Сообщ.
#2
,
|
|
|
а похимичить с
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] не пробывали? |
Сообщ.
#3
,
|
|
|
Цитата Alexus @ а похимичить с [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] не пробывали? пробовал |
Сообщ.
#4
,
|
|
|
Вроде бы если вы сделаете свойство [Browsable(false)] - то дизайнер не будет генерить для него код, который вас раздражает. Во многих случаях это не приемлемо, но может вам и подойдёт.
Добавлено Ещё идея. Поэксперементиуйте с System.ComponentModel.DefaultValueAttribute (или подобными, елси найдёте). По идее, если значение свойства совпадает со значением по-умолчанию, дизайнер может это прошарить и не генерить код. К тому же вероятно заработает фича с выдилением жирным значений изменённых свойств в PropertyGrid, что тоже приятно. |