我有一个属性网格,可以帮助我管理表单上的所有控件。这些控件是为设计师类型的人设计的,所以我不太担心用户界面......直到有人选择多个对象。
我有一个 UITypeEditor 用于这些常见对象的“EffectiveDiameter”属性。它跟踪单位(米与英尺)并即时做一些好事。但是,当有人选择两个或三个公共对象时,EffectiveDiameter 为空白,即使它计算为相同的文本字符串。
例如,在大多数控件中,Microsoft 具有“Anchor”属性,该属性具有“Top, Right”的文本输出。当你把它拉下来时,它是一个带有漂亮 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 像 Anchor 一样显示在 PropertyGrid 中?现在,该字段始终为空白。