我有一个属性网格,可以帮助我管理表单上的所有控件。这些控件是针对设计师类型的人,所以我并不真的担心用户界面……除非有人选择多个对象。
我在这些常见对象的“EffectiveDiameter”属性上有一个UITypeEditor。它会跟踪单位(米或英尺)并进行一些实时漂亮的操作。但是,当有人选择两个或三个普通对象时,EffectiveDiameter为空,即使它评估为相同的文本字符串。
例如,在大多数控件中,Microsoft有一个名为“Anchor”属性,其文本输出为“顶部,右侧”。当您将其下拉时,它是一个具有漂亮的UITypeEditor对象。然而,当您选择表单上具有相同Anchor设置的五个对象时,仍然可以在属性网格中看到字符串“Top,Right”。
<代码/>
/// <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一样显示?目前,该字段总是空白的。