【问题标题】:How do I display custom strings when multiple items are selected?选择多个项目时如何显示自定义字符串?
【发布时间】:2009-03-11 14:00:38
【问题描述】:

我有一个属性网格,可以帮助我管理表单上的所有控件。这些控件是为设计师类型的人设计的,所以我不太担心用户界面......直到有人选择多个对象。

我有一个 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 中?目前,该字段始终为空白。

【问题讨论】:

    标签: c# winforms propertygrid


    【解决方案1】:

    根据您的描述,您似乎在谈论 double 类型的有效直径。但是在您的示例中,您显示的是 umConversion 类的 UITypeEditor。所以,请澄清。

    如果您处于第二种情况,您的属性实际上是您自己的一个类而不是原始类型,那么请确保实现 Equals 方法。 MS PropertyGrid 中的 MultiPropertyDescriptorGridEntry 类调用 Equals 以了解所有目标实例是否具有相同的值。不确定这是否是您的问题,但我会对其进行测试以消除这种可能性。

    【讨论】:

      【解决方案2】:

      在每个属性上也放置一个TypeConverter 属性..

      【讨论】:

      • 我在类本身上有一个 TypeConverter。但是,为了确保没有任何技巧,我确实在属性上放置了一个 TypeConverter(转换为字符串/从字符串转换)以查看它是否有效。它没有。 =(
      • 对不起 :( 如果可能的话,您是否尝试过提供公共基类或接口?如果没有,您可能必须使用属性描述符恢复一些魔法并确保返回相同的实例(PropertyDescriptor ) 适用于所有实例。
      猜你喜欢
      • 2015-04-19
      • 1970-01-01
      • 1970-01-01
      • 2016-08-01
      • 2020-03-11
      • 2016-03-12
      • 1970-01-01
      • 2020-07-15
      • 1970-01-01
      相关资源
      最近更新 更多