У меня есть таблица свойств, которая помогает мне управлять всеми элементами управления в форме. Эти элементы управления предназначены для людей дизайнерского типа, поэтому я не очень беспокоюсь о пользовательском интерфейсе ... пока кто-то не выберет несколько объектов.
У меня есть UITypeEditor для свойства "EffectiveDiameter" в этих общих объектах. Он отслеживает единицы (метры против футов) и делает некоторые приятные вещи на лету. Тем не менее, когда кто-то выбирает два или три общих объекта, EffectiveDiameter будет пустым, даже если он оценивает одну и ту же текстовую строку.
Например, в большинстве элементов управления Microsoft имеет свойство «Якорь», которое имеет текстовый вывод «Вверху, справа». Когда вы опускаете его, это объект с хорошим UITypeEditor. Тем не менее, когда вы выбираете пять объектов в вашей форме, которые имеют одинаковую настройку привязки, вы все равно можете увидеть строку «Вверху, справа» в сетке свойств.
</p>
<pre><code>/// <summary>
/// The default containing class for all Unit-Management Conversion classes.
/// </summary>
[
Serializable,
EditorAttribute(typeof(umConversionTypeEditor), typeof(UITypeEditor)),
TypeConverter(typeof(umConversionTypeConverter)),
]
public class umConversion
{
...
}
public class umConversionTypeEditor : UITypeEditor
{
...
}
// Now, in my designer class, I have ...
private double _effectiveDiameter { get; set; }
[DisplayName("Effective Diameter")]
public virtual umConversion EffectiveDiameter
{
get
{
umConversion ret = new umConversion (_effectiveDiameter);
ret.MeasureInSI = _si;
return ret;
}
set
{
_effectiveDiameter = value.ImperialUnits;
}
}
}
Если я выберу несколько своих пользовательских объектов - все с одинаковым эффективным диаметром - как мне заставить EffectiveDiameter отображать в PropertyGrid, как это делает Anchor? Прямо сейчас это поле всегда пустое.