我有一个属性网格可以帮助我管理的所有控件的形式。这些控件是设计类人,所以我真的不担心那么多有关用户界面...直到有人选择多个对象。

我对这些共同对象“EffectiveDiameter”属性一个UITypeEditor的。它跟踪的单位(米VS英尺),确实对即时一些不错的事情。然而,当有人选择两个或三个公共对象,EffectiveDiameter是空白的,即使它的计算结果为相同的文本串。

例如,在大多数控件,微软已经拥有“上,右”的文本输出的“锚”属性。当你把它拉下来它是一个不错的UITypeEditor的对象。然而,当你选择你的表格上五个对象,所有具有相同的锚设置你仍然可以看到字符串“上,右”在属性网格中。

/// <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中显示像锚呢?眼下,该领域始终是空白的。

有帮助吗?

解决方案

从你的描述,似乎你说的是double类型的effectiveDiameter。但是你的样品中,你表现出了对umConversion类UITypeEditor的。因此,请澄清。

如果您是在第二种情况下,你的财产实际上是一类自己的,而不是一个原始类型,然后确保实现Equals方法。在MS PropertyGrid中调用的MultiPropertyDescriptorGridEntry类的equals知道是否所有目标实例都具有相同的价值。不知道这是你的问题,但我会测试,以消除这种可能性。

其他提示

放置一个TypeConverter属性上的每个属性太..

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top